From 60f5498651a541a9b833f1d5f43c7bc7ca3d8b0c Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Wed, 27 Mar 2019 10:34:27 +0100
Subject: [PATCH] OO-3989: wait 1.5s before printing, fix issues in statistics
 as well

---
 .../olat/ims/qti21/ui/_content/assessment_results.html | 10 ++++++----
 .../QTI21AssessmentItemStatisticsController.java       |  1 +
 .../qti21/ui/statistics/QTI21ItemBodyController.java   |  8 +++++++-
 .../olat/ims/qti21/ui/statistics/_content/print.html   |  7 ++++++-
 .../qti21/ui/statistics/_content/statistics_item.html  |  2 ++
 5 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html
index a1c2dd0df19..6c0851006af 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html
+++ b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html
@@ -555,10 +555,12 @@
 <script type="text/javascript">
 /* <![CDATA[ */ 
 	// execute after radial score rendering
-	setTimeout(function() {
-		window.focus();
-		window.print();
-	},110);
+	jQuery(function() {
+		setTimeout(function() {
+			window.focus();
+			window.print();
+		},1500);
+	});
 /* ]]> */
 </script>
 #end
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21AssessmentItemStatisticsController.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21AssessmentItemStatisticsController.java
index 717441bc856..922f20ecc05 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21AssessmentItemStatisticsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21AssessmentItemStatisticsController.java
@@ -123,6 +123,7 @@ public class QTI21AssessmentItemStatisticsController extends BasicController {
 		itemBodyCtrl = new QTI21ItemBodyController(ureq, getWindowControl(), itemRef, resolvedAssessmentItem, resourceResult);
 		listenTo(itemBodyCtrl);
 		mainVC.put("question", itemBodyCtrl.getInitialComponent());
+		mainVC.contextPut("questionComponentId", itemBodyCtrl.getInteractionsComponentId());
 		mapperUri = itemBodyCtrl.getMapperUri();
 		
 		putInitialPanel(mainVC);
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21ItemBodyController.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21ItemBodyController.java
index c618543627c..71694663ca2 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21ItemBodyController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21ItemBodyController.java
@@ -67,6 +67,8 @@ public class QTI21ItemBodyController extends FormBasicController {
 	private final ItemSessionController itemSessionController;
 	private final ResolvedAssessmentItem resolvedAssessmentItem;
 	
+	private ItemBodyResultFormItem questionItem;
+	
 	@Autowired
 	private QTI21Service qtiService;
 	
@@ -92,10 +94,14 @@ public class QTI21ItemBodyController extends FormBasicController {
 	public String getMapperUri() {
 		return mapperUri;
 	}
+	
+	public String getInteractionsComponentId() {
+		return questionItem.getComponent().getDispatchID();
+	}
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-		ItemBodyResultFormItem questionItem = new ItemBodyResultFormItem("question", resolvedAssessmentItem);
+		questionItem = new ItemBodyResultFormItem("question", resolvedAssessmentItem);
 		questionItem.setItemSessionState(itemSessionController.getItemSessionState());
 		questionItem.setCandidateSessionContext(new TerminatedStaticCandidateSessionContext(new InMemoryAssessmentTestSession()));
 		questionItem.setResourceLocator(inputResourceLocator);
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/_content/print.html b/src/main/java/org/olat/ims/qti21/ui/statistics/_content/print.html
index d30bd838cf0..05da0a70d46 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/_content/print.html
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/_content/print.html
@@ -10,6 +10,11 @@
 <script type='text/javascript'>
 /* <![CDATA[ */
     ## Execute deferred. Gives browser the time to finish the page rendering first before executing the print dialog. 
-	jQuery(function() {window.print();});
+	jQuery(function() {
+		setTimeout(function() {
+			window.focus();
+			window.print();
+		},1500);
+	});
 /* ]]> */
 </script>
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/_content/statistics_item.html b/src/main/java/org/olat/ims/qti21/ui/statistics/_content/statistics_item.html
index 2160d3f7192..a83211bc834 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/_content/statistics_item.html
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/_content/statistics_item.html
@@ -1,3 +1,4 @@
+<div id="o_c$questionComponentId">
 #if($r.available("filter"))
 <div class="o_button_group o_button_group_right">
 	$r.render("filter")
@@ -53,3 +54,4 @@
 		$r.render($interactionId)
 	#end
 </div>
+</div>
\ No newline at end of file
-- 
GitLab