feat: implement candidate details display with logout functionality and exam results link
This commit is contained in:
+50
-21
@@ -105,6 +105,54 @@ let global_passcode = null;
|
|||||||
let global_uid = null;
|
let global_uid = null;
|
||||||
let global_username = null;
|
let global_username = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render candidate details in the options panel if both CID and passcode are present.
|
||||||
|
* Uses `global_cid`/`global_passcode` if set, otherwise falls back to localStorage.
|
||||||
|
*/
|
||||||
|
function showCandidateDetails() {
|
||||||
|
let cidToShow = global_cid;
|
||||||
|
let passToShow = global_passcode;
|
||||||
|
|
||||||
|
if ((cidToShow === null || cidToShow === undefined) || (passToShow === null || passToShow === undefined)) {
|
||||||
|
cidToShow = localStorage.getItem("cid.cid");
|
||||||
|
passToShow = localStorage.getItem("cid.passcode");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only show when both values exist and are non-empty
|
||||||
|
if (cidToShow != null && cidToShow !== "" && passToShow != null && passToShow !== "") {
|
||||||
|
// Ensure globals reflect what's being shown
|
||||||
|
global_cid = cidToShow;
|
||||||
|
global_passcode = passToShow;
|
||||||
|
|
||||||
|
$("#candidate-details").empty();
|
||||||
|
let logout = $("<span>[x]</span>");
|
||||||
|
logout.css({ cursor: "pointer", "margin-left": "8px" });
|
||||||
|
logout.click(() => {
|
||||||
|
localStorage.removeItem("cid.cid");
|
||||||
|
localStorage.removeItem("cid.passcode");
|
||||||
|
// If a logout URL is configured, use it; otherwise reload current page
|
||||||
|
if (URLS.logout_url != undefined && URLS.logout_url !== "") {
|
||||||
|
window.location = URLS.logout_url;
|
||||||
|
} else {
|
||||||
|
window.location = window.location.pathname;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#candidate-details").append(`Current: CID ${global_cid} / Passcode ${global_passcode} `).append(logout);
|
||||||
|
|
||||||
|
// If an exam results URL is configured, update the options link to point to the candidate's results
|
||||||
|
if (URLS.exam_results_url != "" && URLS.exam_results_url != undefined) {
|
||||||
|
let resultsUrl = `${URLS.exam_results_url}${global_cid}/${global_passcode}`;
|
||||||
|
log.debug(`Setting exam results url to ${resultsUrl}`);
|
||||||
|
$("#options-link")
|
||||||
|
.empty()
|
||||||
|
.append(
|
||||||
|
`<a href="${resultsUrl}" target="_blank"><div class="packet-button">Results and answers</div></a>`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let allow_self_marking = true;
|
let allow_self_marking = true;
|
||||||
|
|
||||||
let timer = null;
|
let timer = null;
|
||||||
@@ -191,27 +239,8 @@ async function retrievePacketList() {
|
|||||||
global_cid = cid;
|
global_cid = cid;
|
||||||
global_passcode = passcode;
|
global_passcode = passcode;
|
||||||
|
|
||||||
let logout = $("<span>[x]</span>")
|
// Update the candidate details display (only shows when both values exist)
|
||||||
logout.click(() => {
|
showCandidateDetails();
|
||||||
localStorage.removeItem("cid.cid");
|
|
||||||
localStorage.removeItem("cid.passcode");
|
|
||||||
window.location = window.location.pathname;
|
|
||||||
})
|
|
||||||
|
|
||||||
if (URLS.exam_results_url != "" && URLS.exam_results_url != undefined) {
|
|
||||||
let url = `${URLS.exam_results_url}${global_cid}/${global_passcode}`;
|
|
||||||
log.debug(`Setting exam results url to ${url}`);
|
|
||||||
|
|
||||||
$("#options-link")
|
|
||||||
.empty()
|
|
||||||
.append(
|
|
||||||
`<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);
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
log.debug("Try and set CID / Passcode from current URL")
|
log.debug("Try and set CID / Passcode from current URL")
|
||||||
|
|||||||
Reference in New Issue
Block a user