From d9f174f40b7e3daadf7f378b7e7583f53358a644 Mon Sep 17 00:00:00 2001
From: Mawoka
Date: Mon, 26 Dec 2022 11:04:26 +0100
Subject: [PATCH] :sparkles: Finished Slides
---
classquiz/routers/editor.py | 1 -
frontend/package.json | 1 +
frontend/pnpm-lock.yaml | 20 +++++++
frontend/src/lib/admin.svelte | 40 +++++++++++--
frontend/src/lib/dashboard/main_slider.svelte | 23 ++++++++
frontend/src/lib/editor/slide.svelte | 27 ---------
frontend/src/lib/play/admin/slide.svelte | 56 +++++++++----------
frontend/src/lib/practice/question.svelte | 8 +++
frontend/src/lib/yupSchemas.ts | 1 -
.../src/routes/view/[quiz_id]/+page.svelte | 9 +++
10 files changed, 122 insertions(+), 64 deletions(-)
diff --git a/classquiz/routers/editor.py b/classquiz/routers/editor.py
index 1e2ec09..7f1459f 100644
--- a/classquiz/routers/editor.py
+++ b/classquiz/routers/editor.py
@@ -198,7 +198,6 @@ async def finish_edit(edit_id: str, quiz_input: QuizInput):
quiz.description = quiz_input.description
quiz.updated_at = datetime.now()
quiz.questions = quiz_input.dict()["questions"]
- print(quiz.questions)
quiz.cover_image = quiz_input.cover_image
quiz.background_color = quiz_input.background_color
for image in images_to_delete:
diff --git a/frontend/package.json b/frontend/package.json
index ca9da00..4c6ff7c 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -68,6 +68,7 @@
"luxon": "^3.1.1",
"mapbox-gl": "^2.11.0",
"minisearch": "^5.1.0",
+ "pikaso": "^2.7.4",
"plausible-tracker": "^0.3.8",
"postcss": "^8.4.19",
"postcss-import": "^14.1.0",
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 285b2fb..38d984f 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -56,6 +56,7 @@ specifiers:
luxon: ^3.1.1
mapbox-gl: ^2.11.0
minisearch: ^5.1.0
+ pikaso: ^2.7.4
plausible-tracker: ^0.3.8
postcss: ^8.4.19
postcss-import: ^14.1.0
@@ -138,6 +139,7 @@ devDependencies:
luxon: 3.1.1
mapbox-gl: 2.11.1
minisearch: 5.1.0
+ pikaso: 2.7.4
plausible-tracker: 0.3.8
postcss: 8.4.20
postcss-import: 14.1.0_postcss@8.4.20
@@ -3911,6 +3913,13 @@ packages:
engines: { node: '>=6' }
dev: true
+ /konva/8.3.14:
+ resolution:
+ {
+ integrity: sha512-6I/TZppgY3Frs//AvZ87YVQLFxLywitb8wLS3qMM+Ih9e4QcB5Yy8br6eq7DdUzxPdbsYTz1FQBHzNxs08M1Tw==
+ }
+ dev: true
+
/levn/0.3.0:
resolution:
{
@@ -4646,6 +4655,17 @@ packages:
engines: { node: '>=0.10.0' }
dev: true
+ /pikaso/2.7.4:
+ resolution:
+ {
+ integrity: sha512-30nqF5+xBUIBKiHHfDfjA3oZChjirN3AmhfWb456iUvTpMY2D51PKjGHfgF2SoQP5Jad7i4Zv+wrQAp7BhcNmQ==
+ }
+ dependencies:
+ deepmerge: 4.2.2
+ konva: 8.3.14
+ typescript: 4.7.4
+ dev: true
+
/plausible-tracker/0.3.8:
resolution:
{
diff --git a/frontend/src/lib/admin.svelte b/frontend/src/lib/admin.svelte
index e3bf4a0..7854bb2 100644
--- a/frontend/src/lib/admin.svelte
+++ b/frontend/src/lib/admin.svelte
@@ -27,16 +27,21 @@
let timer_res: string;
let shown_question_now: number;
let final_results_clicked = false;
+ let timer_interval;
export let player_scores;
export const set_question_number = (q_number: number) => {
+ timer_res = '0';
+ clearInterval(timer_interval);
+ // setTimeout(() => {
question_results = null;
socket.emit('set_question_number', q_number.toString());
shown_question_now = q_number;
timer_res = quiz_data.questions[q_number].time;
selected_question = selected_question + 1;
timer(timer_res);
+ // }, 1000);
};
const get_question_results = () => {
socket.emit('get_question_results', {
@@ -53,6 +58,7 @@
const get_final_results = () => {
socket.emit('get_final_results', {});
final_results_clicked = true;
+ timer_res = '0';
};
socket.on('final_results', (data) => {
@@ -75,7 +81,7 @@
const timer = (time: string) => {
let seconds = Number(time);
- let timer_interval = setInterval(() => {
+ timer_interval = setInterval(() => {
if (timer_res === '0') {
clearInterval(timer_interval);
// socket.emit('show_solutions', {});
@@ -109,7 +115,7 @@
/{quiz_data.questions.length}
- {#if selected_question + 1 === quiz_data.questions.length && timer_res === '0' && question_results !== null}
+ {#if selected_question + 1 === quiz_data.questions.length && ((timer_res === '0' && question_results !== null) || quiz_data?.questions?.[selected_question]?.type === QuizQuestionType.SLIDE)}
{#if JSON.stringify(final_results) === JSON.stringify([null])}
{/if}
{#if question_results === null && selected_question !== -1}
-
+ {#if quiz_data.questions[selected_question].type === QuizQuestionType.SLIDE}
+
+ {:else}
+
+ {/if}
{/if}
{:else if selected_question !== -1}
-
+ {#if quiz_data.questions[selected_question].type === QuizQuestionType.SLIDE}
+
+ {:else}
+
+ {/if}
{:else}
-
- {#if main_el}
- {#each question.answers as el, i}
-
- {#if el.type === ElementTypes.Text}
-
- {:else if el.type === ElementTypes.Headline}
-
- {/if}
-
- {/each}
- {/if}
+
+
+
+

+
diff --git a/frontend/src/lib/practice/question.svelte b/frontend/src/lib/practice/question.svelte
index 425e35b..37118e1 100644
--- a/frontend/src/lib/practice/question.svelte
+++ b/frontend/src/lib/practice/question.svelte
@@ -150,5 +150,13 @@
{#if timer_res === '0'}
No correct answers, since this is a poll-question
{/if}
+ {:else if question.type === QuizQuestionType.SLIDE}
+ {#await import('$lib/play/admin/slide.svelte')}
+
+ {:then c}
+
+
+
+ {/await}
{/if}
diff --git a/frontend/src/lib/yupSchemas.ts b/frontend/src/lib/yupSchemas.ts
index 1f3e2f0..fcd946b 100644
--- a/frontend/src/lib/yupSchemas.ts
+++ b/frontend/src/lib/yupSchemas.ts
@@ -5,7 +5,6 @@
*/
import * as yup from 'yup';
-import { ElementTypes } from '$lib/quiz_types';
export const ABCDQuestionSchema = yup
.array()
diff --git a/frontend/src/routes/view/[quiz_id]/+page.svelte b/frontend/src/routes/view/[quiz_id]/+page.svelte
index e8505b3..b91c208 100644
--- a/frontend/src/routes/view/[quiz_id]/+page.svelte
+++ b/frontend/src/routes/view/[quiz_id]/+page.svelte
@@ -11,6 +11,7 @@
import { QuizQuestionType } from '$lib/quiz_types.js';
import StartGamePopup from '$lib/dashboard/start_game.svelte';
import { onMount } from 'svelte';
+ import Spinner from '$lib/Spinner.svelte';
const tippy = createTippy({
arrow: true,
@@ -228,6 +229,14 @@
{/each}
+ {:else if question.type === QuizQuestionType.SLIDE}
+ {#await import('$lib/play/admin/slide.svelte')}
+
+ {:then c}
+
+
+
+ {/await}
{/if}