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 ++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'yaksh/static') 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, -- cgit From ae4e2dad126535cda41a7b4a05fdb247f9cdf737 Mon Sep 17 00:00:00 2001 From: mahesh Date: Thu, 23 Nov 2017 01:11:59 +0530 Subject: Render error output with django template instead of javascript --- yaksh/static/yaksh/css/exam.css | 2 +- yaksh/static/yaksh/js/requesthandler.js | 43 +++++++++------------------------ 2 files changed, 12 insertions(+), 33 deletions(-) (limited to 'yaksh/static') diff --git a/yaksh/static/yaksh/css/exam.css b/yaksh/static/yaksh/css/exam.css index ec48a14..7d10629 100644 --- a/yaksh/static/yaksh/css/exam.css +++ b/yaksh/static/yaksh/css/exam.css @@ -4,4 +4,4 @@ table td, table th { border: black solid 1px !important; } #stdio, #assertion { table-layout: fixed -} \ No newline at end of file +} diff --git a/yaksh/static/yaksh/js/requesthandler.js b/yaksh/static/yaksh/js/requesthandler.js index 1c9a290..5d72241 100644 --- a/yaksh/static/yaksh/js/requesthandler.js +++ b/yaksh/static/yaksh/js/requesthandler.js @@ -61,9 +61,9 @@ function response_handler(method_type, content_type, data, uid){ } else{ unlock_screen(); - error_array = res.error; - generic_error(error_array) - + var error_output = document.getElementById("error_panel"); + error_output.innerHTML = res.error; + focus_on_error(); } } else { reset_values(); @@ -71,35 +71,14 @@ function response_handler(method_type, content_type, data, uid){ } } -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 focus_on_error(){ + var ele = document.getElementById('error_panel') + if (ele) { + ele.scrollIntoView(true); + window.scrollBy(0, -15); + } + } + function ajax_check_code(url, method_type, data_type, data, uid) { $.ajax({ method: method_type, -- cgit From c5469243a3357a030af0047dac90ae8fbbb77e85 Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Thu, 23 Nov 2017 12:59:25 +0530 Subject: Minor changes in requesthandler.js --- yaksh/static/yaksh/js/requesthandler.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'yaksh/static') diff --git a/yaksh/static/yaksh/js/requesthandler.js b/yaksh/static/yaksh/js/requesthandler.js index 5d72241..9421317 100644 --- a/yaksh/static/yaksh/js/requesthandler.js +++ b/yaksh/static/yaksh/js/requesthandler.js @@ -61,9 +61,14 @@ function response_handler(method_type, content_type, data, uid){ } else{ unlock_screen(); + // var notify = document.getElementById("notification"); + if ($("#notification")){ + $("#notification").toggle(); + } + var error_output = document.getElementById("error_panel"); error_output.innerHTML = res.error; - focus_on_error(); + focus_on_error(error_output); } } else { reset_values(); @@ -71,8 +76,7 @@ function response_handler(method_type, content_type, data, uid){ } } -function focus_on_error(){ - var ele = document.getElementById('error_panel') +function focus_on_error(ele){ if (ele) { ele.scrollIntoView(true); window.scrollBy(0, -15); -- cgit From 252449b7b96d73548f53ecd0c3256aa0e777d1dd Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Thu, 23 Nov 2017 13:54:47 +0530 Subject: Put page footer outside div container --- yaksh/static/yaksh/js/requesthandler.js | 1 - 1 file changed, 1 deletion(-) (limited to 'yaksh/static') diff --git a/yaksh/static/yaksh/js/requesthandler.js b/yaksh/static/yaksh/js/requesthandler.js index 9421317..5159c31 100644 --- a/yaksh/static/yaksh/js/requesthandler.js +++ b/yaksh/static/yaksh/js/requesthandler.js @@ -61,7 +61,6 @@ function response_handler(method_type, content_type, data, uid){ } else{ unlock_screen(); - // var notify = document.getElementById("notification"); if ($("#notification")){ $("#notification").toggle(); } -- cgit