improve logging, dynamic url creation

This commit is contained in:
Ross
2023-04-24 12:00:37 +01:00
parent a8b6100018
commit fe6f398424
3 changed files with 129 additions and 92 deletions
+6 -3
View File
@@ -1,8 +1,11 @@
{ {
"editor.autoIndent": "keep", "editor.autoIndent": "keep",
"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false, "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
"javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": false, "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": true,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false, "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false,
"javascript.format.enable": false, "javascript.format.enable": true,
"liveServer.settings.port": 5502 "liveServer.settings.port": 5502,
"javascript.format.insertSpaceAfterConstructor": true,
"javascript.format.insertSpaceBeforeFunctionParenthesis": false,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false
} }
+2 -2
View File
@@ -180,11 +180,11 @@ export function getQuestion(url, question_number, question_total) {
}); });
} }
export function postSavedAnswer(type, qid, answer, e, db_object, db) { export function postSavedAnswer(type, qid, answer, e, db_object, db, submit_url) {
console.debug("post", type, qid, answer, e) console.debug("post", type, qid, answer, e)
return $.ajax({ return $.ajax({
type: "POST", type: "POST",
url: config.question_answer_submit_url, url: submit_url,
data: JSON.stringify({ data: JSON.stringify({
qid: `${type}/${qid}`, qid: `${type}/${qid}`,
answer: answer, answer: answer,
+63 -29
View File
@@ -5,6 +5,37 @@ import * as interact from "./interact.js";
import * as config from "./config.js"; import * as config from "./config.js";
// const { v4: uuidv4 } = require('uuid'); // const { v4: uuidv4 } = require('uuid');
log.setDefaultLevel("warn")
let URLS = {};
// Generate urls base on base_url
if (config.base_url != "" && config.base_url != undefined) {
URLS.base_url = config.base_url;
URLS.exam_query_url = config.base_url + "exam/json";
URLS.exam_submit_url = config.base_url + "exam/submit";
URLS.exam_results_url = config.base_url + "cid/";
URLS.question_feedback_url = config.base_url + "feedback/";
URLS.question_answer_submit_url = config.base_url + "feedback/answer";
URLS.login_url = config.base_url + "/accounts/login/?next=/rts";
URLS.logout_url = config.base_url + "/accounts/logout/?next=/rts";
}
// Override individual urls
let urls_to_check = ["exam_query_url", "exam_submit_url",
"exam_results_url", "question_feedback_url",
"quetion_answer_submit_url", "login_url", "logout_url"]
for (let url of urls_to_check) {
if (config[url] != "" && config[url] != undefined) {
URLS[url] = config[url];
}
}
log.debug(URLS)
let exam_details = { let exam_details = {
aid: null, aid: null,
cid: "", cid: "",
@@ -80,6 +111,7 @@ question_db.version(1).stores({
saved_exams: "&eid, type, exam_mode, name, order, time, exam_json_id", saved_exams: "&eid, type, exam_mode, name, order, time, exam_json_id",
}); });
// Would possible be better with local storage (only want 1 user active at once)
const user_db = new Dexie("user_database"); const user_db = new Dexie("user_database");
user_db.version(1).stores({ user_db.version(1).stores({
user: "cid, passcode", user: "cid, passcode",
@@ -88,10 +120,10 @@ user_db.version(1).stores({
retrievePacketList(); retrievePacketList();
try { try {
refreshDatabaseSettings(); refreshDatabaseSettings();
} }
catch { catch {
console.log("unable to check database settings") log.warn("unable to check database settings")
} }
/** /**
@@ -104,16 +136,14 @@ console.log("unable to check database settings")
async function retrievePacketList() { async function retrievePacketList() {
let url = "packets/packets.json"; let url = "packets/packets.json";
//console.debug(config.exam_query_url); log.debug(`Load users from database...`)
let users = await user_db.user.toArray(); let users = await user_db.user.toArray();
console.debug(users) log.debug(`available users "${users}"`)
if (users.length > 0) { if (users.length > 0) {
global_cid = users[0].cid; global_cid = users[0].cid;
global_passcode = users[0].passcode; global_passcode = users[0].passcode;
//$(".exam-wrapper").toggle();
let logout = $("<span>[x]</span>") let logout = $("<span>[x]</span>")
logout.click(() => { logout.click(() => {
user_db.user.clear().then(() => { user_db.user.clear().then(() => {
@@ -122,20 +152,23 @@ async function retrievePacketList() {
}); });
}) })
if (config.exam_results_url != "" && config.exam_results_url != undefined) { if (URLS.exam_results_url != "" && URLS.exam_results_url != undefined) {
let url = `${config.exam_results_url}${global_cid}/${global_passcode}`; let url = `${URLS.exam_results_url}${global_cid}/${global_passcode}`;
log.debug(`Setting exam results url to ${URLS.exam_results_url}`);
$("#options-link") $("#options-link")
.empty() .empty()
.append( .append(
`<a href="${url}" target="_blank"><div class="packet-button">Results and answers</div></a>` `<a href="${url}" target="_blank"><div class="packet-button">Results and answers</div></a>`
); );
} else {
log.debug("No exams results url set in config.");
} }
$("#candidate-details").append(`Current: CID ${global_cid} / Passcode ${global_passcode} `).append(logout); $("#candidate-details").append(`Current: CID ${global_cid} / Passcode ${global_passcode} `).append(logout);
} else { } else {
log.debug("Try and set CID / Passcode from current URL")
let items = window.location.search.substr(1).split("&"); let items = window.location.search.substr(1).split("&");
if (items.length == 2) { if (items.length == 2) {
let cid = ""; let cid = "";
@@ -152,28 +185,32 @@ async function retrievePacketList() {
} }
}; };
console.debug(cid, passcode) log.debug("CID and passcode extracted from URL", cid, passcode)
log.debug("adding to local db")
user_db.user.add({ user_db.user.add({
cid: cid, cid: cid,
passcode: passcode passcode: passcode
}) })
log.debug("reload page")
location.reload(); location.reload();
} }
} }
try { try {
if (config.exam_query_url != undefined) { log.debug("Try to set exam query url")
if (URLS.exam_query_url != undefined) {
if (global_cid == null) { if (global_cid == null) {
url = config.exam_query_url; url = URLS.exam_query_url;
} else { } else {
url = `${config.exam_query_url}/${global_cid}/${global_passcode}`; url = `${URLS.exam_query_url}/${global_cid}/${global_passcode}`;
} }
} }
log.debug(`url: {url}`)
} catch (e) { } catch (e) {
// log.debug("Unable to set exam query url", e)
log.debug("this will default to packets/packets.json")
} }
$.ajax({ $.ajax({
@@ -198,6 +235,7 @@ async function retrievePacketList() {
}) })
.done(function() {}) .done(function() {})
.fail(function() { .fail(function() {
log.debug("Unable to load packets / exams, try loading '/packets' (legacy)")
$.getJSON("packets", function(data) { $.getJSON("packets", function(data) {
if (data.hasOwnProperty("exams")) { if (data.hasOwnProperty("exams")) {
loadExamList(data); loadExamList(data);
@@ -205,8 +243,7 @@ async function retrievePacketList() {
loadPacketList(data); loadPacketList(data);
} }
}).fail(function(jqXHR, textStatus, errorThrown) { }).fail(function(jqXHR, textStatus, errorThrown) {
console.debug("No packet list available"); console.warn("No packet list available");
//showLoginDialog();
}); });
}) })
.always(function() {}); .always(function() {});
@@ -251,7 +288,7 @@ async function loadExamList(data) {
let logout = $("<span>[x]</span>") let logout = $("<span>[x]</span>")
logout.click(() => { logout.click(() => {
user_db.user.clear().then(() => { user_db.user.clear().then(() => {
window.location = "/accounts/logout/"; window.location = URLS.logout_url;
return; return;
}); });
}) })
@@ -1872,10 +1909,8 @@ function reviewQuestions() {
if (question_type == "long") { if (question_type == "long") {
$("#review-answer-table").append( $("#review-answer-table").append(
$( $(
`<tr class='review-table-heading' data-qid=${ `<tr class='review-table-heading' data-qid=${n + 1
n + 1 } title='Click to load question ${n + 1
} title='Click to load question ${
n + 1
}'><td colspan=2>Question ${n + 1}</td></tr>` }'><td colspan=2>Question ${n + 1}</td></tr>`
).click(() => { ).click(() => {
loadQuestion(n); loadQuestion(n);
@@ -1884,8 +1919,7 @@ function reviewQuestions() {
); );
// $("#review-answer-table").append(`<tr id='review-answer-${qid}'><td class='review-user-answer-cell'></td><td class='review-model-answer-cell'></td></tr>`); // $("#review-answer-table").append(`<tr id='review-answer-${qid}'><td class='review-user-answer-cell'></td><td class='review-model-answer-cell'></td></tr>`);
$("#review-answer-table").append( $("#review-answer-table").append(
`<tr class='answer-sub' data-qid=${ `<tr class='answer-sub' data-qid=${n + 1
n + 1
}><td>Your answers</td><td>Model answers</td></tr>` }><td>Your answers</td><td>Model answers</td></tr>`
); );
@@ -1926,8 +1960,7 @@ function reviewQuestions() {
model_answers[title.toLowerCase()]; model_answers[title.toLowerCase()];
$("#review-answer-table").append( $("#review-answer-table").append(
`<tr class='' data-qid=${ `<tr class='' data-qid=${n + 1
n + 1
}><td>${user_ans}</td><td>${model_ans}</td></tr>` }><td>${user_ans}</td><td>${model_ans}</td></tr>`
); );
}); });
@@ -2260,7 +2293,8 @@ function markAnswer(qid, current_question, n) {
saved_answer, saved_answer,
e, e,
saved_answer_object, saved_answer_object,
db db,
URLS.question_answer_submit_url
); );
}) })
); );
@@ -2337,7 +2371,7 @@ function addFeedback(current_question, qid) {
$(".answer-panel").append( $(".answer-panel").append(
$( $(
`<div class='feedback-link'><a href=${config.question_feedback_url}${current_question.type}/${qid} target=”_blank”>Submit question feedback</a></div>` `<div class='feedback-link'><a href=${URLS.question_feedback_url}${current_question.type}/${qid} target=”_blank”>Submit question feedback</a></div>`
) )
); );
} }
@@ -2470,7 +2504,7 @@ $("#btn-candidate-login").click(function(evt) {
}); });
$("#btn-user-login").click(function(evt) { $("#btn-user-login").click(function(evt) {
window.location = "/accounts/login/?next=/rts" window.location = URLS.login_url;
//$(".exam-wrapper").toggle(); //$(".exam-wrapper").toggle();
}); });