Remove backend dependency

Signed-off-by: András Schmelczer <andras@schmelczer.dev>
This commit is contained in:
Andras Schmelczer 2022-03-20 09:19:32 +01:00
parent 52c67cb96e
commit 117fac031d
No known key found for this signature in database
GPG key ID: 39260B5B0614A13E
2 changed files with 432 additions and 250 deletions

View file

@ -9,13 +9,12 @@ var reviewMode = 0;
function aspect() {
if ($(window).width() > $(window).height()) {
$("#cim").html("Fizika gyakorlás");
}
else{
} else {
$("#cim").html("Fizika");
}
}
function ajaxLoad(type) {
async function ajaxLoad(type) {
reviewMode = 0;
totalPoints = 0;
currentPoints = 0;
@ -24,77 +23,87 @@ function ajaxLoad(type) {
$("#percentage").html("");
$("#megoldas").hide();
$("#loadingGif").show();
let result = "";
if (type == 1) {
var source = $("#evszam").val() + $("#honap").val() + $("#feladat").val();
var source =
"^" + $("#evszam").val() + $("#honap").val() + $("#feladat").val() + "$";
for (var i = 0; i <= 3; i++) {
source = source.replace("all", "%");
};
data = {
'source' : source,
'isSearch' : true
};
source = source.replace("all", ".*");
console.log(source);
}
else if(type == 2) {
data = {
'mk': 1,
'md': 1,
'me': 1,
'mf': 1,
'mr': 1,
'h': 1,
'es': 1,
'ee': 1,
'ev': 1,
'm': 1,
'o': 1,
'ah': 1,
'am': 1,
'cs': 1,
'v': 1,
'NOQ': 15
};
}
else {
result = await loadQuestions(true, undefined, source, 1000000);
} else if (type == 2) {
result = await loadQuestions(
false,
[
"mk",
"md",
"me",
"mf",
"mr",
"h",
"es",
"ee",
"ev",
"m",
"o",
"ah",
"am",
"cs",
"v",
],
undefined,
15
);
} else {
var NOQ = $("#numberof").val() ? $("#numberof").val() : 15;
data = {
'mk': $("#mk").prop("checked") ? "1" : "0",
'md': $("#md").prop("checked") ? "1" : "0",
'me': $("#me").prop("checked") ? "1" : "0",
'mf': $("#mf").prop("checked") ? "1" : "0",
'mr': $("#mr").prop("checked") ? "1" : "0",
'h': $("#h").prop("checked") ? "1" : "0",
'es': $("#es").prop("checked") ? "1" : "0",
'ee': $("#ee").prop("checked") ? "1" : "0",
'ev': $("#ev").prop("checked") ? "1" : "0",
'm': $("#m").prop("checked") ? "1" : "0",
'o': $("#o").prop("checked") ? "1" : "0",
'ah': $("#ah").prop("checked") ? "1" : "0",
'am': $("#am").prop("checked") ? "1" : "0",
'cs': $("#cs").prop("checked") ? "1" : "0",
'v': $("#v").prop("checked") ? "1" : "0",
'NOQ': NOQ
};
categories = [
$("#mk").prop("checked") ? "mk" : "",
$("#md").prop("checked") ? "md" : "",
$("#me").prop("checked") ? "me" : "",
$("#mf").prop("checked") ? "mf" : "",
$("#mr").prop("checked") ? "mr" : "",
$("#h").prop("checked") ? "h" : "",
$("#es").prop("checked") ? "es" : "",
$("#ee").prop("checked") ? "ee" : "",
$("#ev").prop("checked") ? "ev" : "",
$("#m").prop("checked") ? "m" : "",
$("#o").prop("checked") ? "o" : "",
$("#ah").prop("checked") ? "ah" : "",
$("#am").prop("checked") ? "am" : "",
$("#cs").prop("checked") ? "cs" : "",
$("#v").prop("checked") ? "v" : "",
];
result = await loadQuestions(false, categories, undefined, NOQ);
}
$.ajax({
url: 'load.php',
type: 'POST',
data: data,
success: function(data){
$("#loadingGif").hide();
$("#content").html(data);
$("#content").html(result);
$("#state2").hide();
if(data != '<div class="buttonwrapper"><b style="font-size: 2rem;">Nem található a keresésnek megfelelő feladat!</b></div>'){
if (
result !=
'<div class="buttonwrapper"><b style="font-size: 2rem;">Nem található a keresésnek megfelelő feladat!</b></div>'
) {
$("#megoldas").show();
$("#state").html("Feladatok sikeresen letöltve!");
}
}
});
}
function showCorrect(id, correctAns) {
teszt(id, correctAns);
eval("$('" + "#label" + id + ".rad" + correctAns + "').css('background-color', '#C6FF8C');");
eval(
"$('" +
"#label" +
id +
".rad" +
correctAns +
"').css('background-color', '#C6FF8C');"
);
$("#state").html("Helyes válaszok bejelölve!");
$("#state2").html("(Ellenőrző mód, az itteni eredményeid nem kerülnek elmentésre, a módból való kilépéshez tölts be egy új tesztsort!)");
$("#state2").html(
"(Ellenőrző mód, az itteni eredményeid nem kerülnek elmentésre, a módból való kilépéshez tölts be egy új tesztsort!)"
);
}
function teszt(id, correctAns) {
@ -105,28 +114,45 @@ function teszt(id, correctAns){
if (isCorrect) {
$(div).animate({ backgroundColor: "#C6FF8C" }, 1100);
correctAnswersGiven++;
}
else{
} else {
$(div).animate({ backgroundColor: "#FF808C" }, 1100);
}
console.log(currentPoints, totalPoints, correctAnswersGiven);
if (currentPoints >= totalPoints) {
var percentage = correctAnswersGiven/totalPoints*100;
percentage = Math.round(percentage * 100) / 100
var percentage = (correctAnswersGiven / totalPoints) * 100;
percentage = Math.round(percentage * 100) / 100;
percentage = percentage.toFixed(2);
$("#percentage").html("Eredmény: " + percentage + "%");
$("#state").html("Válaszok leellenőrizve!");
if (isLocal && !reviewMode) {
var datum = new Date();
var ido = Math.round(timer/60)
eval("localStorage.teszt" + numberOfPreviousTests + " = '" + percentage + "'");
eval("localStorage.teszt" + numberOfPreviousTests + "date = '" + datum.toLocaleDateString() + "'");
eval("localStorage.teszt" + numberOfPreviousTests + "time = '" + ido + "'");
eval("localStorage.teszt" + numberOfPreviousTests + "total = '" + totalPoints +"'");
var ido = Math.round(timer / 60);
eval(
"localStorage.teszt" + numberOfPreviousTests + " = '" + percentage + "'"
);
eval(
"localStorage.teszt" +
numberOfPreviousTests +
"date = '" +
datum.toLocaleDateString() +
"'"
);
eval(
"localStorage.teszt" + numberOfPreviousTests + "time = '" + ido + "'"
);
eval(
"localStorage.teszt" +
numberOfPreviousTests +
"total = '" +
totalPoints +
"'"
);
startTimer = 0;
timer = 0;
$("#state2").show();
$("#state2").html("Eredményed mentésre került! Ellenőrző módba belépve az eredményeid nem kerülnek tárolásra. A módból való kilépéshez tölts be egy új tesztsort!");
$("#state2").html(
"Eredményed mentésre került! Ellenőrző módba belépve az eredményeid nem kerülnek tárolásra. A módból való kilépéshez tölts be egy új tesztsort!"
);
eredmeny();
reviewMode = 1;
}
@ -136,16 +162,19 @@ function teszt(id, correctAns){
}
function scrollTo(where) {
$('html, body').animate({
scrollTop: $(where).offset().top - 100
}, 1000);
$("html, body").animate(
{
scrollTop: $(where).offset().top - 100,
},
1000
);
}
function howMany() {
var localString = "localStorage.teszt";
numberOfPreviousTests = 1; //number of previous tests+1
localString += numberOfPreviousTests;
while(typeof(eval(localString)) !== "undefined"){
while (typeof eval(localString) !== "undefined") {
numberOfPreviousTests++;
localString = "localStorage.teszt" + numberOfPreviousTests;
}
@ -154,42 +183,56 @@ function howMany(){
function eredmeny() {
howMany();
if (isLocal) {
if(typeof(localStorage.teszt1) !== "undefined"){
$("#tablazat").html('<table id="ered"><tr><th></th><th>Dátum</th><th>Időtartam</th><th>Eredmény</th><th>Pontszám</th></tr></table>');
if (typeof localStorage.teszt1 !== "undefined") {
$("#tablazat").html(
'<table id="ered"><tr><th></th><th>Dátum</th><th>Időtartam</th><th>Eredmény</th><th>Pontszám</th></tr></table>'
);
for (var i = 1; i < numberOfPreviousTests; i++) {
var localString = "localStorage.teszt" + i;
var datumString = localString + "date";
var timeString = localString + "time";
var totalString = localString + "total";
var isGood = eval(localString);
$('#ered tr:last').after(
"<tr><td>" + i + ".</td><td>"
+ eval(datumString) + "</td><td>"
+ eval(timeString) + " perc</td>"
+ "<td style='color: hsl(" + isGood + ",100%,50%);''> <b>" + eval(localString) + "%</b></td><td>"
+ Math.round(eval(localString)*eval(totalString)/100) + "/" + eval(totalString) + " pont</td></tr>"
$("#ered tr:last").after(
"<tr><td>" +
i +
".</td><td>" +
eval(datumString) +
"</td><td>" +
eval(timeString) +
" perc</td>" +
"<td style='color: hsl(" +
isGood +
",100%,50%);''> <b>" +
eval(localString) +
"%</b></td><td>" +
Math.round((eval(localString) * eval(totalString)) / 100) +
"/" +
eval(totalString) +
" pont</td></tr>"
);
}
} else {
$("#info").html("Még nincsenek elmentett eredményeid.");
}
else {
$("#info").html("Még nincsenek elmentett eredményeid.")
}
}
else {
$("#tablazat").html("<h2>Sajnos a böngésződ nem támogatja ezt a funkciót, tölts le egy modernebbet vagy jelentkezz be!</h2>")
} else {
$("#tablazat").html(
"<h2>Sajnos a böngésződ nem támogatja ezt a funkciót, tölts le egy modernebbet vagy jelentkezz be!</h2>"
);
}
}
//starting up
if (typeof(Storage) !== "undefined") {
if (typeof Storage !== "undefined") {
var isLocal = 1;
howMany();
}
else{
} else {
var isLocal = 0;
}
setInterval(function(){if(startTimer) timer++; }, 1000);
setInterval(function () {
if (startTimer) timer++;
}, 1000);
$(document).ready(function () {
eredmeny();
@ -208,26 +251,26 @@ $(document).ready(function(){
aspect();
$("#bfooldal").click(function () {
$("#bfooldal").css('font-weight', '700');
$("#bteszt").css('font-weight', '400');
$("#beredmenyek").css('font-weight', '400');
$("#bfooldal").css("font-weight", "700");
$("#bteszt").css("font-weight", "400");
$("#beredmenyek").css("font-weight", "400");
$("#eredmenyek").hide();
$("#teszt").hide();
$("#fooldal").show();
});
$("#bteszt").click(function () {
$("#bfooldal").css('font-weight', '400');
$("#bteszt").css('font-weight', '700');
$("#beredmenyek").css('font-weight', '400');
$("#bfooldal").css("font-weight", "400");
$("#bteszt").css("font-weight", "700");
$("#beredmenyek").css("font-weight", "400");
$("#eredmenyek").hide();
$("#teszt").show();
$("#fooldal").hide();
});
$("#beredmenyek").click(function () {
//eredmeny();
$("#bfooldal").css('font-weight', '400');
$("#bteszt").css('font-weight', '400');
$("#beredmenyek").css('font-weight', '700');
$("#bfooldal").css("font-weight", "400");
$("#bteszt").css("font-weight", "400");
$("#beredmenyek").css("font-weight", "700");
$("#eredmenyek").show();
$("#teszt").hide();
$("#fooldal").hide();
@ -256,26 +299,23 @@ $(document).ready(function(){
$(".f2016").hide();
$(".f").hide();
$(".fnem17").hide();
}
else if($("#evszam").val() == "2016/"){
} else if ($("#evszam").val() == "2016/") {
$(".f2006").hide();
$(".f2016").show();
$(".f").show();
$(".fnem17").show();
}
else if($("#evszam").val() == "2017/"){
} else if ($("#evszam").val() == "2017/") {
$(".f2006").hide();
$(".f2016").hide();
$(".f").show();
$(".fnem17").hide();
}
else{
} else {
$(".f2006").hide();
$(".f2016").hide();
$(".f").show();
$(".fnem17").show();
}
$("#honap").val('all');
$("#honap").val("all");
});
$("#mec").change(function () {
@ -304,56 +344,110 @@ $(document).ready(function(){
ajaxLoad(isSearch ? 1 : 3);
});
$(".scroll").click(function () {
$("body").animate({
scrollTop: $("#teszt").offset().top
}, 3000);
$("body").animate(
{
scrollTop: $("#teszt").offset().top,
},
3000
);
});
});
(function (d) {
d.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function (f, e) {
d.each(
[
"backgroundColor",
"borderBottomColor",
"borderLeftColor",
"borderRightColor",
"borderTopColor",
"color",
"outlineColor",
],
function (f, e) {
d.fx.step[e] = function (g) {
if (!g.colorInit) {
g.start = c(g.elem, e);
g.end = b(g.end);
g.colorInit = true
g.colorInit = true;
}
g.elem.style[e] = "rgb(" + [Math.max(Math.min(parseInt((g.pos * (g.end[0] - g.start[0])) + g.start[0]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[1] - g.start[1])) + g.start[1]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[2] - g.start[2])) + g.start[2]), 255), 0)].join(",") + ")"
g.elem.style[e] =
"rgb(" +
[
Math.max(
Math.min(
parseInt(g.pos * (g.end[0] - g.start[0]) + g.start[0]),
255
),
0
),
Math.max(
Math.min(
parseInt(g.pos * (g.end[1] - g.start[1]) + g.start[1]),
255
),
0
),
Math.max(
Math.min(
parseInt(g.pos * (g.end[2] - g.start[2]) + g.start[2]),
255
),
0
),
].join(",") +
")";
};
}
});
);
function b(f) {
var e;
if (f && f.constructor == Array && f.length == 3) {
return f
return f;
}
if (e = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)) {
return [parseInt(e[1]), parseInt(e[2]), parseInt(e[3])]
if (
(e = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(
f
))
) {
return [parseInt(e[1]), parseInt(e[2]), parseInt(e[3])];
}
if (e = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)) {
return [parseFloat(e[1]) * 2.55, parseFloat(e[2]) * 2.55, parseFloat(e[3]) * 2.55]
if (
(e = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(
f
))
) {
return [
parseFloat(e[1]) * 2.55,
parseFloat(e[2]) * 2.55,
parseFloat(e[3]) * 2.55,
];
}
if (e = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)) {
return [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)]
if ((e = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f))) {
return [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)];
}
if (e = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)) {
return [parseInt(e[1] + e[1], 16), parseInt(e[2] + e[2], 16), parseInt(e[3] + e[3], 16)]
if ((e = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f))) {
return [
parseInt(e[1] + e[1], 16),
parseInt(e[2] + e[2], 16),
parseInt(e[3] + e[3], 16),
];
}
if (e = /rgba\(0, 0, 0, 0\)/.exec(f)) {
return a.transparent
if ((e = /rgba\(0, 0, 0, 0\)/.exec(f))) {
return a.transparent;
}
return a[d.trim(f).toLowerCase()]
return a[d.trim(f).toLowerCase()];
}
function c(g, e) {
var f;
do {
f = d.css(g, e);
if (f != "" && f != "transparent" || d.nodeName(g, "body")) {
break
if ((f != "" && f != "transparent") || d.nodeName(g, "body")) {
break;
}
e = "backgroundColor"
} while (g = g.parentNode);
return b(f)
}
var a = {
e = "backgroundColor";
} while ((g = g.parentNode));
return b(f);
}
var a = {};
})(jQuery);

88
js/load.js Normal file
View file

@ -0,0 +1,88 @@
let questions = null;
const loadQuestions = async (
isSearch,
categories,
sourceScheme,
questionCount
) => {
if (questions === null) {
questions = await (await fetch("fizika.json")).json();
}
let currentQuestions = questions.slice();
if (isSearch) {
currentQuestions = currentQuestions.filter((q) =>
q.source.match(sourceScheme)
);
} else {
shuffleArray(currentQuestions);
currentQuestions = currentQuestions.filter((q) =>
categories.includes(q.type)
);
}
resultHtml = "";
currentQuestions = currentQuestions.slice(0, questionCount);
currentQuestions.forEach(
({ id, source, description, a, b, c, d, correct, image }, i) => {
resultHtml += `
<div class="feladat card" id="feladat${id}">
<h2 style="float: left;">${i + 1}.</h2><h2>${source}</h2>
<pre>${description}</pre>
${image ? `<img src="pics/${image}"><br>` : ""}
<form id="form${id}"">
<input type="radio" id="rad1" name="group">
<label id="label${id}" class="rad1">${a}</label>
<br>
<input type="radio" id="rad2" name="group">
<label id="label${id}" class="rad2">${b}</label>
<br>
<input type="radio" id="rad3" name="group">
<label id="label${id}" class="rad3">${c}</label>
<br>
${
d
? `
<input type="radio" id="rad4" name="group">
<label id="label${id}" class="rad4">${d}</label>
<br>`
: ""
}
</form>
<script type="text/javascript">
$(document).ready(function(){
totalPoints++;
$("#ans").click(function(event){
event.preventDefault();
teszt(${id}, ${correct});
});
$("#cAns").click(function(event){
event.preventDefault();
showCorrect(${id}, ${correct});
});
});
</script>
</div>
`;
}
);
resultHtml +=
currentQuestions.length === 0
? '<div class="buttonwrapper"><b style="font-size: 2rem;">Nem található a keresésnek megfelelő feladat!</b></div>'
: `<script type="text/javascript">
startTimer = 1;
timer = 0;
</script>`;
return resultHtml;
};
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}