Sfoglia il codice sorgente

原卷显示开启/关闭

ting.yin 6 anni fa
parent
commit
67a57bb978

+ 14 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/Exam.java

@@ -58,6 +58,12 @@ public class Exam implements Serializable {
 
     @Column(name = "creator_id")
     private Integer creatorId;
+    
+    /**
+     * 开启/关闭 原卷显示
+     */
+    @Column(name = "show_sheet", nullable = false)
+    private boolean showSheet;
 
     public Integer getId() {
         return id;
@@ -139,4 +145,12 @@ public class Exam implements Serializable {
 		this.forceSpecialTag = forceSpecialTag;
 	}
 
+	public boolean isShowSheet() {
+		return showSheet;
+	}
+
+	public void setShowSheet(boolean showSheet) {
+		this.showSheet = showSheet;
+	}
+
 }

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java

@@ -118,6 +118,7 @@ public class ExamController extends BaseParameterController {
             oldExam.setDescription(exam.getDescription());
             oldExam.setStatus(ExamStatus.findByValue(StatusValue));
             oldExam.setForceSpecialTag(exam.isForceSpecialTag());
+            oldExam.setShowSheet(exam.isShowSheet());
             examService.save(oldExam);
         }
         return "redirect:/admin/exam";

+ 15 - 5
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -5,6 +5,9 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,9 +21,11 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.exam.model.Tag;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.exam.service.TagService;
@@ -34,8 +39,6 @@ import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.session.model.StmmsSession;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 
 @Controller
 @RequestMapping("/mark")
@@ -61,6 +64,9 @@ public class MarkController extends BaseController {
 
     @Autowired
     private TagService tagService;
+    
+    @Autowired
+    private ExamService examService;
 
     @Value("${slice.image.server}")
     private String sliceServer;
@@ -191,6 +197,8 @@ public class MarkController extends BaseController {
         modelAndView.addObject("cardServer", cardServer);
         modelAndView.addObject("marker", marker);
         modelAndView.addObject("subject", subjectService.find(marker.getExamId(), marker.getSubjectCode()));
+        Exam exam = examService.findById(marker.getExamId());
+        modelAndView.addObject("exam", exam);
         clearCurrentTask(marker);
     }
 
@@ -219,17 +227,19 @@ public class MarkController extends BaseController {
         query.setExamId(marker.getExamId());
         query.setSubjectCode(marker.getSubjectCode());
         long totalCount = libraryService.countByQuery(query);
-
+        query.setStatus(LibraryStatus.WAITING);
+        long leftCount = libraryService.countByQuery(query);
         query.setStatus(LibraryStatus.MARKED);
-        long markedCount = libraryService.countByQuery(query);
-
         query.setMarkerId(marker.getId());
+        long markedCount = libraryService.countByQuery(query);
+        query.setSubjectCode(null);
         long personCount = libraryService.countByQuery(query);
 
         status.accumulate("personCount", personCount);
         status.accumulate("totalCount", totalCount);
         status.accumulate("topCount", marker.getTopCount() == null ? 0 : marker.getTopCount());
         status.accumulate("markedCount", markedCount);
+        status.accumulate("leftCount", leftCount);
         status.accumulate("exceptionCount", 0);
         status.accumulate("valid", totalCount > 0);
 

+ 8 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examEdit.jsp

@@ -28,7 +28,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/admin/exam">考试列表</a></li>
+		<li><a href="${ctx}/admin/exam/list">考试列表</a></li>
 		<li class="active"><a href="##">编辑考试</a></li>
 	</ul><br/>
 	<form:form id="inputForm" modelAttribute="exam" action="${ctx}/admin/exam/edit" method="post" class="form-horizontal">
@@ -54,12 +54,18 @@
 					onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:true});"/>
 			</div>
 		</div>
-				<div class="control-group">
+		<div class="control-group">
 			<label class="control-label">强制标记</label>
 			<div class="controls">
 				<input name="forceSpecialTag" type="checkbox" <c:if test="${exam.forceSpecialTag}">checked</c:if>/>
 			</div>
 		</div>
+		<div class="control-group">
+			<label class="control-label">显示原卷</label>
+			<div class="controls">
+				<input name="showSheet" type="checkbox" <c:if test="${exam.showSheet}">checked</c:if>/>
+			</div>
+		</div>
 		<div class="control-group">
 			<label class="control-label">状态</label>
 			<div class="controls">

+ 7 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examForm.jsp

@@ -28,7 +28,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/admin/exam">考试列表</a></li>
+		<li><a href="${ctx}/admin/exam/list">考试列表</a></li>
 		<li class="active"><a href="${ctx}/admin/exam/form?id=${exam.id}">添加考试</a></li>
 	</ul><br/>
 	<form:form id="inputForm" modelAttribute="exam" action="${ctx}/admin/exam/save" method="post" class="form-horizontal">
@@ -59,6 +59,12 @@
 				<input name="forceSpecialTag" type="checkbox" <c:if test="${exam.forceSpecialTag}">checked</c:if>/>
 			</div>
 		</div>
+		<div class="control-group">
+			<label class="control-label">显示原卷</label>
+			<div class="controls">
+				<input name="showSheet" type="checkbox" <c:if test="${exam.showSheet}">checked</c:if>/>
+			</div>
+		</div>
 		<div class="control-group">
 			<label class="control-label">描述:</label>
 			<div class="controls">

+ 5 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examList.jsp

@@ -10,7 +10,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li class="active"><a href="${ctx}/admin/exam">考试列表</a></li>
+		<li class="active"><a href="${ctx}/admin/exam/list">考试列表</a></li>
 		<c:if test="${web_user.type.value==0}">
 		<li><a href="${ctx}/admin/exam/form">添加考试</a></li>
 		</c:if>
@@ -31,6 +31,7 @@
 				<th>考试名称</th>
 				<th>考试时间</th>
 				<th>强制标记</th>
+				<th>显示原卷</th>
 				<th>状态</th>
 				<th>操作</th>
 			</tr>
@@ -50,7 +51,9 @@
 				<td><c:if test="${exam.forceSpecialTag}">是</c:if>
 					<c:if test="${!exam.forceSpecialTag}">否</c:if>
 				</td>
-				
+				<td><c:if test="${exam.showSheet}">是</c:if>
+					<c:if test="${!exam.showSheet}">否</c:if>
+				</td>
 				<td>${exam.status.name}</td>
 				<td>
     				<a href="${ctx}/admin/exam/view/${exam.id}/info">详情</a>    				

+ 7 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markNew.jsp

@@ -47,12 +47,13 @@
 				userName : '${web_user.name}',
 				logoutUrl: '${ctx}/mark/logout',
 				clearUrl: '${ctx}/mark/clear',
+				forceSpecialTag : eval('${exam.forceSpecialTag}'.toLowerCase()),
 				modules : {
 					'single-image-view' : {},
 					'image-builder': {},
 					'mark-status': {
 						simple : false,
-						<c:if test="${marker.common==true}">
+						<c:if test="${marker.examSubjects.size()>=1}">
 						subjectSelectUrl: '${ctx}/mark/subject-select',
 						</c:if>
 						subjectName : '${subject.displayName}'
@@ -66,9 +67,11 @@
 						needConfirm : false,
 					  	showTotalScore:true
 					},
+					<c:if test="${exam.showSheet==true}">
 					'sheet-view' : {
 						server : '${sheetServer}'
 					},
+					</c:if>
 					'warning-info': {
 					},
 					'thumbnail':{
@@ -84,7 +87,9 @@
 							{title:'试卷',  url:'<c:if test="${subject.hasPaper==true}">${cardServer}${subject.paperUrl}</c:if>'},
 							{title:'答案',  url:'<c:if test="${subject.hasAnswer==true}">${cardServer}${subject.answerUrl}</c:if>'}
 						]
-					}
+					},
+                    'specialTag':{
+                    }
 				}
 			});
 			mc.start({

+ 5 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markTrack.jsp

@@ -40,13 +40,14 @@
 				userName : '${web_user.name}',
 				logoutUrl: '${ctx}/mark/logout',
 				clearUrl: '${ctx}/mark/clear',
+				forceSpecialTag : eval('${exam.forceSpecialTag}'.toLowerCase()),
 				modules : {
 					'single-image-view' : {},
 					'image-builder': {},
 					'mark-status': {
 						simple : false,
-						<c:if test="${marker.common==true}">
-						subjectSelectUrl: '${ctx}/mark/subject-select',
+						<c:if test="${marker.examSubjects.size()>=1}">
+							subjectSelectUrl: '${ctx}/mark/subject-select',
 						</c:if>
 						subjectName : '${subject.displayName}'
 					},
@@ -70,7 +71,8 @@
                     'specialTag':{
                     },
 					'sheet-view':{
-                        server : '${sheetServer}'
+                        server : '${sheetServer}',
+                        showSheet : eval('${exam.showSheet}'.toLowerCase())
                     },
 					'object-view':{
 					    list: [

+ 15 - 0
stmms-web/src/main/webapp/static/mark-new/css/style.css

@@ -1166,3 +1166,18 @@ a.button.all-zero-button {
     margin-left: 12px;
 }
 
+.sheet, .sheet > * {
+	list-style: none;
+	outline: none;
+	-webkit-tap-highlight-color: transparent;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.sheet .popover-cont {
+	width: 100%;
+	height: -webkit-calc(100vh - 51px);
+	height: -moz-calc(100vh - 51px);
+	height: calc(100vh - 51px);
+	padding: 15px;
+	overflow-y: scroll;
+}

BIN
stmms-web/src/main/webapp/static/mark-new/images/images-close-b.png


+ 8 - 4
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js

@@ -76,7 +76,7 @@ MarkStatus.prototype.init = function(option) {
 
 MarkStatus.prototype.checkTopCount = function(task) {
     //任务限额提示
-    if (task != undefined && task.previous != true && this.status != undefined && this.status.topCount > 0 && this.status.markedCount >= this.status.topCount && this.ignoreTopCount != true) {
+    if (task != undefined && task.previous != true && this.status != undefined && this.status.topCount > 0 && this.status.personCount >= this.status.topCount && this.ignoreTopCount != true) {
         this.popover.show();
     } else {
         this.popover.hide();
@@ -86,14 +86,15 @@ MarkStatus.prototype.checkTopCount = function(task) {
 MarkStatus.prototype.render = function(status) {
     if (status != undefined && status.valid === true) {
         var topCount = status.topCount;
-        this.topStatus.find('#mark-count').html(status.personCount);
-
+        this.topStatus.find('#mark-count').html(status.markedCount);
+        this.topStatus.find('#person-count').html(status.personCount);
         //大题进度信息区域
         if (this.blockProgress != undefined) {
             var totalCount = status.totalCount;
             var markedCount = status.markedCount;
             var exceptionCount = status.exceptionCount;
-            var leftCount = totalCount > (markedCount + exceptionCount) ? (totalCount - markedCount - exceptionCount) : 0;
+            var personCount = status.personCount;
+            var leftCount = status.leftCount;
             var markedPercent = totalCount > 0 ? new Number((totalCount - leftCount) * 100 / totalCount).toFixed(0) : '0';
             if (markedPercent == '100' && leftCount > 0) {
                 markedPercent = '99';
@@ -108,6 +109,7 @@ MarkStatus.prototype.render = function(status) {
             }
             this.blockProgress.find('#total-count').html(totalCount);
             this.blockProgress.find('#marked-count').html(markedCount);
+            this.blockProgress.find('#person-count').html(personCount);
             this.blockProgress.find('#todo-count').html(leftCount);
             this.blockProgress.find('#exception-count').html(exceptionCount);
             this.blockProgress.find('#marked-percent').html(markedPercent + '%');
@@ -130,6 +132,7 @@ MarkStatus.prototype.status_dom = '<p class="text">\
 MarkStatus.prototype.progress_dom = '<p class="text">\
 <i>未评<em id="todo-count"></em></i>\
 <i>进度<em id="marked-percent"></em></i>\
+<i>总评<em id="person-count"></em></i>\
 </p>';
 
 MarkStatus.prototype.block_progress_bak_dom = '<p class="text">\
@@ -138,6 +141,7 @@ MarkStatus.prototype.block_progress_bak_dom = '<p class="text">\
 <i>未评<em id="todo-count"></em></i>\
 <i>异常<em id="exception-count"></em></i>\
 <i>进度<em id="marked-percent"></em></i>\
+<i>总评<em id="person-count"></em></i>\
 </p>';
 
 MarkStatus.prototype.popover_dom = '<div class="warning-popover">\

+ 86 - 6
stmms-web/src/main/webapp/static/mark-new/js/modules/sheet-view.js

@@ -10,7 +10,7 @@ function SheetView(option) {
     this.server = option.server;
     this.init();
     this.markControl.on('task.get.success', this, function(event, context, eventObject) {
-        this.render(context.task.sheetUrls);
+    	this.render(context.task.sheetUrls);
     });
     this.markControl.on('task.get.none', this, function(event, context, eventObject) {
         this.render();
@@ -21,22 +21,102 @@ function SheetView(option) {
 }
 
 SheetView.prototype.init = function() {
+	var self = this;
     this.markControl.initMarkFunction();
-    this.container = getDom(this.container_dom, this.markControl).appendTo(this.markControl.container.assistant).find('#sheet-list');
+    this.container = getDom(this.container_dom, this.markControl).appendTo(this.markControl.container);
+    this.container.width(this.maxWidth);
+    
+    this.container.header = getDom(this.container_header_dom, this.markControl).appendTo(this.container);
+    this.container.header.width('100%');
+
+    this.container.content = getDom(this.container_content_dom, this.markControl).appendTo(this.container);
+    this.container.content.width('100%');
+    
+    this.container.header.find('.image-close').click(function () {
+        self.toggle(false);
+    });
+    
+    this.control = getDom(this.control_dom, this.markControl).appendTo(this.markControl.container.assistant);
+    this.control.find('#show-sheet-button').click(function () {
+        self.markControl.container.assistant.hide();
+        self.toggle(true);
+    });
+    this.control.find('#hide-sheet-button').click(function () {
+        self.markControl.container.assistant.hide();
+        self.toggle(false);
+    });
+    self.toggle(false);
 }
 
 SheetView.prototype.render = function(urls) {
+	var self = this;
     if (urls != undefined && urls.length > 0) {
-        this.container.empty();
         for (var i = 0; i < urls.length; i++) {
-            this.container.append('<a href="' + (this.server + urls[i]) + '" target="_blank">' + (i + 1) + '</a>');
+        	var url = urls[i];
+        	var sheetId = "sheet"+i;
+        	var nav = $('<a href="#" data-url="'+url+'" id="'+sheetId+'"><span>'+(i+1)+'</span></a>').appendTo(this.container.header.find('.image-switch'));
         }
+        this.container.header.find('.image-switch a').click(function(){
+        	var url = this.getAttribute("data-url");
+        	var sheetId = this.getAttribute("id");
+        	self.renderContent(self.container.content, sheetId);
+        });
+        this.container.header.find('.image-switch a').first().click();
+        
+    } else {
+        this.container.hide();
+    }
+}
+
+SheetView.prototype.renderContent = function(content, sheetId) {
+	content.width(this.markControl.container.centerContent.width());
+	content.height(this.markControl.container.centerContent.height());
+	content.empty();
+	var url =  document.getElementById(sheetId).getAttribute("data-url");
+	var show  = false;
+	var i = sheetId.split("sheet")[1];
+	if(i%2==0){
+		show = true;
+	}
+	content.append($('<canvas id="sheet-canvas"></canvas>'));
+	var image = new Image();
+	image.crossOrigin = '';
+	image.src = this.server + url ;
+    image.canvas = document.getElementById('sheet-canvas');
+    image.content = content;
+    image.onload = function() {
+    	var ctx = this.canvas.getContext("2d");
+    	this.canvas.width = Math.min(this.width, this.content.width());
+    	this.canvas.height = this.canvas.width * this.height / this.width;
+    	ctx.drawImage(image, 0,0,this.width,this.height,0, 0, this.canvas.width, this.canvas.height);
+    	if(show){
+    		ctx.fillStyle = "#FFFFFF";
+    		ctx.fillRect(0, 0, this.canvas.width/2, this.canvas.height*3.7/10);
+    	}
+    	this.canvas.toDataURL("image/jpeg");
+    }
+}
+
+SheetView.prototype.toggle = function(show) {
+    if (show == true) {
+        this.show = true;
         this.container.show();
     } else {
+        this.show = false;
         this.container.hide();
     }
 }
 
-SheetView.prototype.container_dom = '<h3 class="popover-title">查看原卷</h3>\
+SheetView.prototype.control_dom = '<h3 class="popover-title">查看原卷</h3>\
 <div class="popover-content"><p id="sheet-list" class="popover-list">\
-</p></div>';
+<a href="#" id="show-sheet-button">打开</a><a href="#" id="hide-sheet-button">关闭</a>\
+</p></div>';
+
+SheetView.prototype.container_dom = '<div class="image-view-popover sheet" style=" width:100%; height:100vh;"></div>';
+
+SheetView.prototype.container_header_dom = '<div class="popover-header">\
+	<p class="title">原图切换</p>\
+	<p class="image-switch"></p>\
+	<p class="image-close"><img src="{staticServer}/mark-new/images/images-close-b.png" /></p></div>';
+
+SheetView.prototype.container_content_dom = '<div class="popover-cont"></div>';

+ 39 - 0
stmms-web/src/main/webapp/static/mark-new/sheet-popover.html

@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>高校版阅卷系统</title>
+<link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
+<link href="css/style.css" rel="stylesheet" type="text/css" />
+<style type="text/css">
+/*新增css*/
+.sheet, .sheet > * {
+	list-style: none;
+	outline: none;
+	-webkit-tap-highlight-color: transparent;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.sheet .popover-cont {
+	width: 100%;
+	height: -webkit-calc(100vh - 51px);
+	height: -moz-calc(100vh - 51px);
+	height: calc(100vh - 51px);
+	padding: 15px;
+	overflow-y: scroll;
+}
+</style>
+</head>
+<body>
+<div class="image-view-popover sheet" style=" width:100%; height:100vh;">
+  <div class="popover-header">
+    <p class="title">原图切换</p>
+    <p class="image-switch"><a href="#">1</a><a href="#">2</a><a class="curr" href="#">3</a><a href="#">4</a></p>
+    <p class="image-close"><img src="images/images-close-b.png" /></p>
+  </div>
+  <div class="popover-cont">
+    <canvas id="canvas"></canvas>
+  </div>
+</div>
+</body>
+</html>

+ 15 - 0
stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

@@ -500,6 +500,21 @@ MarkControl.prototype.submitTask = function(submitUrl) {
     var submitUrl = submitUrl != undefined && submitUrl.length > 0 ? submitUrl : this.option.submitUrl;
 
     if (task != undefined && this.context.submitting != true) {
+    	//开启强制标记
+        if(this.option.forceSpecialTag===true){
+        	var isTag = !(task.tagList==undefined ||task.tagList==null ||task.tagList.length <= 0);
+        	var isTrack = false;
+        	for(var i in task.trackList) {
+        		var track = task.trackList[i];
+        		if(track.positionX!=0 || track.positionY!=0 ){
+        			isTrack = true;
+        		}
+        	}
+        	if(!(isTag||isTrack)){
+        		markControl.trigger('task.submit.forceSpecialTag');
+        		return;
+        	}
+        }
         task.markStepList = undefined;
         task.pictureUrls = undefined;
         task.sheetUrls = undefined;

+ 29 - 5
stmms-web/src/main/webapp/static/mark-track/js/modules/sheet-view.js

@@ -10,7 +10,10 @@ function SheetView(option) {
 	this.server = option.server;
 	this.list = [];
 	this.markControl.on('task.get.success', this, function(event, context, eventObject) {
-		this.render(context.task.sheetUrls);
+		//开启原图显示
+		if(option.showSheet===true){
+			this.render(context.task.sheetUrls);
+		}
 	});
 	this.markControl.on('task.get.none', this, function(event, context, eventObject) {
 		this.render();
@@ -27,10 +30,10 @@ SheetView.prototype.render = function(urls) {
 			if(this.list.length > i) {
 				var item = this.list[i];
 				item.nav.show();
-				this.renderContent(item.content, url);
+				this.renderContent(item.content, url, i);
 			} else {
 				var content = $(this.container_dom).appendTo(this.markControl.container.centerContent);
-				this.renderContent(content, url);
+				this.renderContent(content, url, i);
 				this.list.push({
 				    nav: this.markControl.addNavGroup('原卷' + (i + 1), content),
 				    content: content
@@ -46,11 +49,32 @@ SheetView.prototype.render = function(urls) {
 	}
 }
 
-SheetView.prototype.renderContent = function(content, url) {
+SheetView.prototype.renderContent = function(content, url, i) {
 	content.width(this.markControl.container.centerContent.width());
 	content.height(this.markControl.container.centerContent.height());
 	content.empty();
-	content.append($('<img src="'+this.server + url +'">'));
+//	content.append($('<img src="'+this.server + url +'">'));
+	var show  = false;
+	if(i%2==0){
+		show = true;
+	}
+	content.append($('<canvas id="sheet-canvas'+i+'"></canvas>'));
+	var image = new Image();
+	image.crossOrigin = '';
+	image.src = this.server + url ;
+    image.canvas = document.getElementById('sheet-canvas'+i);
+    image.content = content;
+    image.onload = function() {
+    	var ctx = this.canvas.getContext("2d");
+    	this.canvas.width = Math.min(this.width, this.content.width());
+    	this.canvas.height = this.canvas.width * this.height / this.width;
+    	ctx.drawImage(image, 0,0,this.width,this.height,0, 0, this.canvas.width, this.canvas.height);
+    	if(show){
+    		ctx.fillStyle = "#FFFFFF";
+    		ctx.fillRect(0, 0, this.canvas.width/2, this.canvas.height*3.7/10);
+    	}
+    	this.canvas.toDataURL("image/jpeg");
+    }
 }
 
 SheetView.prototype.container_dom = '<div style="display:none; overflow: scroll"></div>';