79 lines
2.3 KiB
JavaScript

let difficulty_selection = $(".difficulty-selection");
let btn_previous_question = $("#btn-previous-question");
let btn_next_question = $("#btn-next-question");
let control_btns = $(".control-btn");
let current_difficulty = 1;
difficulty_selection.on("click", change_difficulty);
btn_next_question.on("click", next_question);
btn_previous_question.on("click", previous_question);
update_question();
function get_new_question(difficulty) {
control_btns.attr("disabled", true);
$.ajax(next_question_url, {
method: "GET",
cache: false,
data: {difficulty: difficulty},
dataType: "json",
success: (data, textStatus, jqXHR) => {
control_btns.attr("disabled", false);
if (textStatus !== "nocontent") {
question_received(data);
} else {
question_received(textStatus);
}
},
error: (jqXHR, textStatus, errorThrown) => {
control_btns.attr("disabled", false);
console.log(textStatus);
console.log(errorThrown);
},
})
}
function change_difficulty(event) {
difficulty_selection.removeClass("active");
let target = $(event.target);
target.addClass("active");
if (target.prop("innerText") === "Easy") {
current_difficulty = 1;
} else if (target.prop("innerText") === "Medium") {
current_difficulty = 2;
} else {
current_difficulty = 3;
}
update_question();
}
function next_question() {
let difficulty = questions[current_difficulty-1]
let question_index = difficulty["current_question"]+1;
if (difficulty["questions"].length === question_index) {
get_new_question(current_difficulty);
} else {
difficulty["current_question"] += 1;
update_question();
}
}
function previous_question() {
questions[current_difficulty-1]["current_question"] -= 1;
update_question();
}
function question_received(data) {
let difficulty = questions[current_difficulty-1];
if (data) {
if (data !== "nocontent") {
difficulty["questions"].push(data);
difficulty["current_question"] += 1;
update_question();
} else {
difficulty["last_index"] = difficulty["current_question"];
update_question();
}
}
}