Neue Antworten in bei Fragen Updaten sich automatisch in der Live übersicht, gap für die fragen hinzugefühgt

This commit is contained in:
juirek committed 2026-01-11 16:03:08 +01:00
1 parent 96594641dc
commit 83aa196709
1 file changed
+39 -10
+39 -10
View File
@@ -11,7 +11,10 @@
<script src="https://cdn.jsdelivr.net/npm/qrcodejs/qrcode.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/qrcodejs/qrcode.min.js"></script>
<script> <script>
const couchDB = new CouchDB(); const couchDB = new CouchDB();
setUserData(couchDB); async function start() {
await setUserData(couchDB);
}
start();
</script> </script>
<title>Kurs Anzeige</title> <title>Kurs Anzeige</title>
</head> </head>
@@ -35,7 +38,7 @@ setUserData(couchDB);
</div> </div>
<div class="questionColumn"> <div class="questionColumn">
<div id="questionCards"></div> <div id="questionCards" style="display: flex; flex-direction: column; gap: 20px"></div>
</div> </div>
</div> </div>
<button class="live" id="liveButton" onclick="AnsichtZeigen()"> <button class="live" id="liveButton" onclick="AnsichtZeigen()">
@@ -72,7 +75,7 @@ setUserData(couchDB);
const courseInfo = await couchDB.get("course:" + courseId); const courseInfo = await couchDB.get("course:" + courseId);
let index = 0; let index = 0;
for(const question of courseInfo.questions) { for(const question of courseInfo.questions) {
const overlayId = `qOver${index}` const overlayId = `qOver${index}`;
const answerContainerId = `answerContainer${index}`; const answerContainerId = `answerContainer${index}`;
@@ -82,13 +85,13 @@ setUserData(couchDB);
card.innerHTML = ` card.innerHTML = `
<div class="questionTitle">${question.title}</div> <div class="questionTitle">${question.title}</div>
<button class="questionResults" onclick='questionOverlay("${overlayId}", "${index}")'> <button class="questionResults" onclick='questionOverlay("${overlayId}", ${index})'>
Auswertung Auswertung
<overlay class="my_overlay" id="${overlayId}"> <overlay class="my_overlay" id="${overlayId}" onclose="closeQuestion()">
<div class="overlayTitle"> <div class="overlayTitle">
${question.title}: ${question.title}:
</div> </div>
<div id="${answerContainerId}"></div> <div id="${answerContainerId}" class="${answerContainerId}"></div>
</overlay> </overlay>
</button> </button>
`; `;
@@ -97,9 +100,37 @@ setUserData(couchDB);
} }
} }
async function questionOverlay(overlayId, index) {
const awnserList = document.getElementById(`answerContainer${index}`) var overlayInterval = null;
var activeOverlayIndex = null;
async function questionOverlay(overlayId, index) {
clearInterval(overlayInterval);
overlayInterval = null;
activeOverlayIndex = index;
showOverlay(overlayId);
await new Promise(r => setTimeout(r, 0));
await updateOverlay(index);
overlayInterval = setInterval(async() => {
await updateOverlay(activeOverlayIndex);
}, 3000);
}
function closeQuestion() {
clearInterval(overlayInterval);
overlayInterval = null;
}
async function updateOverlay(index) {
const overlayId = getOverlay(`qOver${index}`);
if(!overlayId) {return;}
const awnserList = overlayId.querySelector(`.answerContainer${index}`);
if(!awnserList) {return;}
const courseInfo = await couchDB.get("course:" + courseId) const courseInfo = await couchDB.get("course:" + courseId)
awnserList.innerHTML = ""; awnserList.innerHTML = "";
@@ -179,8 +210,6 @@ setUserData(couchDB);
break; break;
} }
showOverlay(overlayId);
} }
</script> </script>