From 7e2972786599fc23c436e593fcc236defd93c88c Mon Sep 17 00:00:00 2001
From: maheshgudi
Date: Wed, 22 Nov 2017 20:49:07 +0530
Subject: Display error output without reloading.
---
yaksh/static/yaksh/js/requesthandler.js | 43 +++++++++++++++--
yaksh/templates/exam.html | 83 ++-------------------------------
yaksh/views.py | 26 +++++++++--
3 files changed, 64 insertions(+), 88 deletions(-)
diff --git a/yaksh/static/yaksh/js/requesthandler.js b/yaksh/static/yaksh/js/requesthandler.js
index 7ff90df..1c9a290 100644
--- a/yaksh/static/yaksh/js/requesthandler.js
+++ b/yaksh/static/yaksh/js/requesthandler.js
@@ -53,16 +53,53 @@ function response_handler(method_type, content_type, data, uid){
} else if(content_type.indexOf("application/json") !== -1) {
res = JSON.parse(data);
request_status = res.status;
- if(method_type === "POST") {
- uid = res.uid;
+ if (request_status){
+ if(method_type === "POST") {
+ uid = res.uid;
+ }
+ check_state(request_status, uid);
+ }
+ else{
+ unlock_screen();
+ error_array = res.error;
+ generic_error(error_array)
+
}
- check_state(request_status, uid);
} else {
reset_values();
unlock_screen();
}
}
+function generic_error(error_array){
+ var error_output = document.getElementById("error_panel");
+ error_output.innerHTML = ""
+ for (var i = 0; i < error_array.length; i++) {
+ var panel_danger = document.createElement('div');
+ panel_danger.setAttribute('class', "panel panel-danger");
+
+ var panel_heading = document.createElement('div');
+ panel_heading.setAttribute('class', "panel-heading");
+ panel_heading.innerHTML = "Error no. " + (i + 1);
+
+ var panel_body = document.createElement('div');
+ panel_body.setAttribute('class', "panel-body");
+
+ var well = document.createElement('div');
+ well.setAttribute('class', "well well-sm");
+
+ var pre = document.createElement('pre');
+ var code = document.createElement('code');
+ console.log(error_array[i])
+ code.append(error_array[i]);
+ pre.appendChild(code);
+ well.appendChild(pre);
+ panel_body.appendChild(well);
+ panel_danger.appendChild(panel_heading);
+ panel_danger.appendChild(panel_body);
+ error_output.appendChild(panel_danger);
+ }
+}
function ajax_check_code(url, method_type, data_type, data, uid) {
$.ajax({
method: method_type,
diff --git a/yaksh/templates/exam.html b/yaksh/templates/exam.html
index a1f0df4..f722c5f 100644
--- a/yaksh/templates/exam.html
+++ b/yaksh/templates/exam.html
@@ -82,86 +82,9 @@
{% if question.type == 'code' or question.type == 'upload' %}
- {% if error_message %}
-
{{error|safe}}
- {% elif error.type == 'assertion' %}
- {% if error.test_case %}
- We tried your code with the following test case:{{error.test_case}}
- {% endif %}
- The following error took place:
-Exception Name: | -{{error.exception}} | -
Exception Message: | {{error.message}} | -
Full Traceback: | -{{error.traceback}} |
- {% endif %}
-
For given Input value(s): | -{{error.given_input}} | -
{{forloop.counter}} | -{{expected|default:""}} | -{{user|default:""}} | - {% if forloop.counter0 in error.error_line_numbers or not expected or not user %} -- {% else %} - | - {% endif %} - - {% endfor %} - |
Error: | -{{error.error_msg}} | -