Eingabe_Funktion
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
</div>{% endif %}
|
||||
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
|
||||
<p class="text-gray-700 font-bold text-xl mb-4">Frage {{ question_index|add:1 }} von {{ total_questions }}</p>
|
||||
<h1 class="text-3xl font-bold mb-6">{{ question_data.question }}</h1>
|
||||
<h1 class="text-3xl font-bold mb-6">{{ question_data.question }}</h1>
|
||||
|
||||
{% if question_image %}
|
||||
<div class="flex justify-center">
|
||||
@@ -36,7 +36,7 @@
|
||||
<p id="answer-count" class="text-6xl font-bold text-blue-700">0/0</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if question_data.type != "input" %}
|
||||
<div class="grid grid-cols-2 gap-4" id="options-container">
|
||||
{% for option in question_data.options %}
|
||||
<button
|
||||
@@ -48,7 +48,20 @@
|
||||
</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
{% if request.session.mode == "learn" %}
|
||||
<input id="textanswer" type="text" placeholder="DEINE ANTWORT"
|
||||
class="answer-option text-center p-2 bg-gray-100 hover:bg-blue-100 rounded-lg transition-colors duration-200 answer-option">
|
||||
|
||||
<button {% if request.session.mode == "learn" %}
|
||||
onclick="submitAnswer( -1 );" {% endif %}
|
||||
class="text-center p-2 bg-gray-100 hover:bg-blue-100 rounded-lg transition-colors duration-200 answer-option">
|
||||
abschicken
|
||||
</button>
|
||||
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
@@ -149,13 +162,15 @@
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
// Request initial participants list
|
||||
gameSocket.onopen = function(e) {
|
||||
gameSocket.send(JSON.stringify({
|
||||
'type': 'update_participants'
|
||||
}));
|
||||
{% if request.session.mode != "learn" %}
|
||||
updateTimer();
|
||||
{% endif %}
|
||||
};
|
||||
|
||||
|
||||
@@ -177,10 +192,20 @@
|
||||
|
||||
function submitAnswer(optionIndex) {
|
||||
if (hasAnswered) return;
|
||||
|
||||
let input = ""; // Declare input here
|
||||
|
||||
try {
|
||||
input = document.getElementById("textanswer").value;
|
||||
} catch (e) {
|
||||
input = "";
|
||||
}
|
||||
hasAnswered = true;
|
||||
const now = Date.now();
|
||||
const timeRemaining = Math.max(0, questionDuration - (now - questionStartTime));
|
||||
let timeRemaining = Math.max(0, questionDuration - (now - questionStartTime));
|
||||
{% if request.session.mode == "learn" %}
|
||||
timeRemaining = questionDuration;
|
||||
{% endif %}
|
||||
|
||||
|
||||
// Disable all options and highlight selected
|
||||
const options = document.getElementsByClassName('answer-option');
|
||||
@@ -194,14 +219,23 @@
|
||||
option.classList.add('opacity-50');
|
||||
}
|
||||
}
|
||||
|
||||
if(input!=""){
|
||||
// Send answer to server
|
||||
gameSocket.send(JSON.stringify({
|
||||
type: 'submit_answer',
|
||||
participant_id: participantId,
|
||||
answer: optionIndex,
|
||||
answer:input,
|
||||
time_remaining: timeRemaining
|
||||
}));
|
||||
}
|
||||
else{
|
||||
gameSocket.send(JSON.stringify({
|
||||
type: 'submit_answer',
|
||||
participant_id: participantId,
|
||||
answer:optionIndex,
|
||||
time_remaining: timeRemaining
|
||||
}));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -15,7 +15,7 @@
|
||||
<p class="text-blue-600 text-xl mb-2">Verbleibende Zeit</p>
|
||||
<p id="remaining-time" class="text-6xl font-bold text-blue-700">30</p>
|
||||
</div>
|
||||
|
||||
{% if question_data.type != "input" %}
|
||||
<div class="grid grid-cols-2 gap-4" id="options-container">
|
||||
{% for option in question_data.options %}
|
||||
<button
|
||||
@@ -26,6 +26,15 @@
|
||||
</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<input id="textanswer" type="text" placeholder="DEINE ANTWORT"
|
||||
class="answer-option text-center p-2 bg-gray-100 hover:bg-blue-100 rounded-lg transition-colors duration-200 answer-option">
|
||||
<button
|
||||
onclick="submitAnswer( -1 );"
|
||||
class="text-center p-2 bg-gray-100 hover:bg-blue-100 rounded-lg transition-colors duration-200 answer-option">
|
||||
abschicken
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -57,6 +66,13 @@
|
||||
|
||||
function submitAnswer(optionIndex) {
|
||||
if (hasAnswered) return;
|
||||
let input = ""; // Declare input here
|
||||
|
||||
try {
|
||||
input = document.getElementById("textanswer").value;
|
||||
} catch (e) {
|
||||
input = "";
|
||||
}
|
||||
|
||||
hasAnswered = true;
|
||||
const now = Date.now();
|
||||
@@ -75,14 +91,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
if(input!=""){
|
||||
// Send answer to server
|
||||
gameSocket.send(JSON.stringify({
|
||||
type: 'submit_answer',
|
||||
participant_id: participantId,
|
||||
answer: optionIndex,
|
||||
answer:input,
|
||||
time_remaining: timeRemaining
|
||||
}));
|
||||
}
|
||||
else{
|
||||
gameSocket.send(JSON.stringify({
|
||||
type: 'submit_answer',
|
||||
participant_id: participantId,
|
||||
answer:optionIndex,
|
||||
time_remaining: timeRemaining
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Timer
|
||||
function updateTimer() {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if request.session.mode != "learn" %}
|
||||
|
||||
<div class="mb-6">
|
||||
<h2 class="text-xl font-bold mb-4">Punktestand</h2>
|
||||
<div id="scoreboard" class="space-y-2">
|
||||
@@ -48,7 +48,7 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if is_host %}
|
||||
{% if is_last_question %}
|
||||
<button id="finish-button" class="w-full p-3 rounded-full bg-blue-600 text-white font-bold hover:bg-blue-700 transition-colors duration-200">
|
||||
|
||||
Reference in New Issue
Block a user