📈 Added plausible events

This commit is contained in:
Mawoka
2022-03-30 19:46:52 +02:00
parent ce2a5dd7a8
commit f1e2ce0ff2
12 changed files with 4514 additions and 3433 deletions
+67 -57
View File
@@ -1,4 +1,4 @@
<script lang='ts'>
<script lang="ts">
import { getLocalization } from '$lib/i18n';
const { t } = getLocalization();
@@ -22,7 +22,6 @@
answer: string;
}
export let data: Data;
export let submit_button_text = 'Create';
let imgur_links_valid = false;
@@ -60,78 +59,86 @@
};
</script>
<label class='pl-2'>
<input type='checkbox' class='w-fit' bind:checked={data.public} />
<label class="pl-2">
<input type="checkbox" class="w-fit" bind:checked={data.public} />
{$t('words.public')}?
</label>
<label class='pl-2'>
<label class="pl-2">
{$t('words.title')}:
<input type='text' placeholder={$t('words.title')} bind:value={data.title}
class='text-black w-3/5 bg-inherit border-dotted border-b-2 border-black' />
<input
type="text"
placeholder={$t('words.title')}
bind:value={data.title}
class="text-black w-3/5 bg-inherit border-dotted border-b-2 border-black"
/>
</label>
<label class='pl-2'>
<label class="pl-2">
{$t('words.description')}:
<textarea placeholder={$t('words.description')} bind:value={data.description} class='text-black w-3/5' />
<textarea
placeholder={$t('words.description')}
bind:value={data.description}
class="text-black w-3/5"
/>
</label>
{#each data.questions as question, index_question}
<div class='ml-8 grid grid-cols-1 gap-2 m-2 border border-black border-2'>
<h1 class='text-3xl m-1'>{$t('words.question')} {index_question + 1}</h1>
<div class="ml-8 grid grid-cols-1 gap-2 m-2 border border-black border-2">
<h1 class="text-3xl m-1">{$t('words.question')} {index_question + 1}</h1>
<label class='m-1'>
<label class="m-1">
{$t('words.question')}:
<input
type='text'
type="text"
placeholder={$t('words.question')}
bind:value={question.question}
class='text-black w-3/5 bg-inherit border-dotted border-b-2 border-black'
class="text-black w-3/5 bg-inherit border-dotted border-b-2 border-black"
/>
</label>
<label class='m-1'>
<label class="m-1">
{$t('words.image')}:
<input
type='text'
placeholder='https://i.imgur.com/kSPCidY.png'
type="text"
placeholder="https://i.imgur.com/kSPCidY.png"
bind:value={question.image}
class='text-black w-3/5 bg-inherit border-dotted border-b-2 border-black'
class="text-black w-3/5 bg-inherit border-dotted border-b-2 border-black"
/>
</label>
<label class='m-1'>
<label class="m-1">
{$t('editor.time_in_seconds')}:
<input type='text' placeholder='20' bind:value={question.time}
class='text-black w-3/5 bg-inherit border-dotted border-b-2 border-black' />
<input
type="text"
placeholder="20"
bind:value={question.time}
class="text-black w-3/5 bg-inherit border-dotted border-b-2 border-black"
/>
</label>
{#each question.answers as answer, index_answer}
<div class='ml-8 grid grid-cols-1 gap-2 m-2 border border-black border-2 m-1'>
<h1 class='text-3xl m-1'>{$t('words.answer')} {index_answer + 1}</h1>
<p class='m-1'>{$t('words.answer')}: {index_answer + 1} {$t('words.question')}: {index_question + 1}</p>
<label class=' m-1'>
<div class="ml-8 grid grid-cols-1 gap-2 m-2 border border-black border-2 m-1">
<h1 class="text-3xl m-1">{$t('words.answer')} {index_answer + 1}</h1>
<p class="m-1">
{$t('words.answer')}: {index_answer + 1}
{$t('words.question')}: {index_question + 1}
</p>
<label class=" m-1">
{$t('words.answer')}:
<input
type='text'
type="text"
placeholder={$t('words.answer')}
bind:value={data.questions[index_question].answers[index_answer].answer}
class='text-black w-3/5 bg-inherit border-dotted border-b-2 border-black'
class="text-black w-3/5 bg-inherit border-dotted border-b-2 border-black"
/>
</label>
<label class='m-1'>
<input type='checkbox' bind:checked={answer.right} class='text-black' />
<label class="m-1">
<input type="checkbox" bind:checked={answer.right} class="text-black" />
{$t('editor.right_or_true?')}
</label>
<button
class='text-left border-yellow-500 border-2 w-fit m-1'
type='button'
class="text-left border-yellow-500 border-2 w-fit m-1"
type="button"
on:click={() => {
data.questions[index_question].answers.splice(index_answer, 1);
data.questions[index_question].answers = data.questions[index_question].answers
data.questions[index_question].answers =
data.questions[index_question].answers;
}}
>
{$t('editor.delete_answer')}
@@ -139,23 +146,23 @@
</div>
{/each}
<button
class='text-left border-green-500 border-2 w-fit m-1'
type='button'
class="text-left border-green-500 border-2 w-fit m-1"
type="button"
on:click={() => {
data.questions[index_question].answers = [
...data.questions[index_question].answers,
{ ...empty_answer }
];
}}
data.questions[index_question].answers = [
...data.questions[index_question].answers,
{ ...empty_answer }
];
}}
>
{$t('editor.add_new_answer')}
</button>
<button
class='text-left border-red-500 border-2 w-fit m-1'
type='button'
class="text-left border-red-500 border-2 w-fit m-1"
type="button"
on:click={() => {
data.questions.splice(index_question, 1);
data.questions = data.questions
data.questions = data.questions;
}}
>
{$t('editor.delete_question')}
@@ -163,18 +170,21 @@
</div>
{/each}
<button
class='text-left'
type='button'
class="text-left"
type="button"
on:click={() => {
data.questions = [...data.questions, { ...empty_question }];
}}
data.questions = [...data.questions, { ...empty_question }];
}}
>
{$t('editor.add_new_question')}
</button>
{#if imgur_links_valid}
<p class='text-blue-600 text-xl text-center w-fit mx-auto'>
<p class="text-blue-600 text-xl text-center w-fit mx-auto">
Not all links are imgur-links! <!-- TODO: Add translation -->
</p>
{/if}
<button type='submit' class='text-xl disabled:cursor-not-allowed disabled:border disabled:border-red-500 w-fit mx-auto'
disabled={imgur_links_valid}>{submit_button_text}</button>
<button
type="submit"
class="text-xl disabled:cursor-not-allowed disabled:border disabled:border-red-500 w-fit mx-auto"
disabled={imgur_links_valid}>{submit_button_text}</button
>
+109 -109
View File
@@ -1,111 +1,111 @@
{
"index_page": {
"meta": {
"title": "Home",
"description": "ClassQuiz ist eine Quiz-App wie KAHOOT! für Schüler*innen, welche open-source und kostenlos ist"
},
"features_description": {
"1": "ClassQuiz ist eine Quiz-Platform, welche das erstellen und managen von Quizzes erlaubt.",
"2": "Das Hauptfeature ist die KAHOOT!-Importfunktion, mit der man Quizzes von KAHOOT! importieren kann."
},
"slogan": "Die open-source Quiz-Platform!"
},
"overview_page": {
"created_at": "Erstellt am",
"question_count": "Fragenanzahl"
},
"edit_page": {
"success_update_title": "Quiz erfolgreich aktualisiert!",
"success_update_body": "Das Quiz wurde erfolgreich aktualisiert!"
},
"create_page": {
"success": {
"title": "Quiz erfolgreich erstellt!",
"body": "Das Quiz wurde erfolgreich erstellt!"
}
},
"register_page": {
"greeting": "Schön, dich zu sehen!",
"create_account": "Account erstellen",
"forgot_password?": "Passwort vergessen?",
"already_have_account?": "Hast du schon einen Account?"
},
"login_page": {
"welcome_back": "Willkommen zurück!",
"login_or_create_account": "Einloggen oder Account erstellen",
"already_have_account": "Noch kein Account?",
"modal": {
"success": {
"success_check_mail": "Login erfolgreich! Guck in deine Mailbox!",
"success": "Login erfolgreich!",
"description": {
"success_check_mail": "Bitte überprüfe deine Mailbox, weil du eine Email mit einem Link, um dich einzuloggen, empfangen haben solltest.",
"success": "Du hast dich erfolgreich angemeldet!"
}
},
"error": {
"wrong_creds": "Falsche Email oder falsches Passwort!",
"unexpected": "Unerwarteter Fehler!",
"description": {
"wrong_creds": "Bitte stelle sicher, dass dein Passwort und deine Email richtig sind!",
"unexpected": "Der gute alte unerwartete Fehler hat uns heimgesucht!"
}
}
}
},
"words": {
"question": "Frage",
"answer": "Antwort",
"stats": "Statistiken",
"features": "Features",
"import": "Importieren",
"url": "URL",
"submit": "Abschicken",
"create": "Erstellen",
"logout": "Abmelden",
"title": "Titel",
"play": "Spielen",
"edit": "Bearbeiten",
"delete": "Löschen",
"public": "Öffentlich",
"start": "Start",
"connect": "Verbinden",
"pin": "PIN",
"kick": "Kicken",
"register": "Registrieren",
"login": "Anmelden",
"docs": "Dokumentation",
"close": "Schließen",
"save": "Speichern",
"username": "Nutzername",
"password": "Passwort",
"email": "Email",
"description": "Beschreibung",
"image": "Bild"
},
"editor": {
"time_in_seconds": "Zeit in Sekunden",
"right_or_true?": "Richtig?",
"add_new_answer": "Neue Antwort hinzufügen",
"add_new_question": "Neue Frage hinzufügen",
"delete_question": "Frage löschen",
"delete_answer": "Antwort löschen"
},
"import": {
"need_help": "",
"visit_docs": ""
},
"admin": {
"already_registered_as_admin": ""
},
"admin_page": {
"already_registered_as_admin": "Ein Admin wurde schon für dieses Spiel registriert.",
"start_game": "Spiel starten",
"time_left": "Zeit übrig",
"get_results": "Ergebnisse abfragen"
},
"import_page": {
"need_help": "Brauchst du Hilfe?",
"visit_docs": "Besuche die Dokumentation"
}
"index_page": {
"meta": {
"title": "Home",
"description": "ClassQuiz ist eine Quiz-App wie KAHOOT! für Schüler*innen, welche open-source und kostenlos ist"
},
"features_description": {
"1": "ClassQuiz ist eine Quiz-Platform, welche das erstellen und managen von Quizzes erlaubt.",
"2": "Das Hauptfeature ist die KAHOOT!-Importfunktion, mit der man Quizzes von KAHOOT! importieren kann."
},
"slogan": "Die open-source Quiz-Platform!"
},
"overview_page": {
"created_at": "Erstellt am",
"question_count": "Fragenanzahl"
},
"edit_page": {
"success_update_title": "Quiz erfolgreich aktualisiert!",
"success_update_body": "Das Quiz wurde erfolgreich aktualisiert!"
},
"create_page": {
"success": {
"title": "Quiz erfolgreich erstellt!",
"body": "Das Quiz wurde erfolgreich erstellt!"
}
},
"register_page": {
"greeting": "Schön, dich zu sehen!",
"create_account": "Account erstellen",
"forgot_password?": "Passwort vergessen?",
"already_have_account?": "Hast du schon einen Account?"
},
"login_page": {
"welcome_back": "Willkommen zurück!",
"login_or_create_account": "Einloggen oder Account erstellen",
"already_have_account": "Noch kein Account?",
"modal": {
"success": {
"success_check_mail": "Login erfolgreich! Guck in deine Mailbox!",
"success": "Login erfolgreich!",
"description": {
"success_check_mail": "Bitte überprüfe deine Mailbox, weil du eine Email mit einem Link, um dich einzuloggen, empfangen haben solltest.",
"success": "Du hast dich erfolgreich angemeldet!"
}
},
"error": {
"wrong_creds": "Falsche Email oder falsches Passwort!",
"unexpected": "Unerwarteter Fehler!",
"description": {
"wrong_creds": "Bitte stelle sicher, dass dein Passwort und deine Email richtig sind!",
"unexpected": "Der gute alte unerwartete Fehler hat uns heimgesucht!"
}
}
}
},
"words": {
"question": "Frage",
"answer": "Antwort",
"stats": "Statistiken",
"features": "Features",
"import": "Importieren",
"url": "URL",
"submit": "Abschicken",
"create": "Erstellen",
"logout": "Abmelden",
"title": "Titel",
"play": "Spielen",
"edit": "Bearbeiten",
"delete": "Löschen",
"public": "Öffentlich",
"start": "Start",
"connect": "Verbinden",
"pin": "PIN",
"kick": "Kicken",
"register": "Registrieren",
"login": "Anmelden",
"docs": "Dokumentation",
"close": "Schließen",
"save": "Speichern",
"username": "Nutzername",
"password": "Passwort",
"email": "Email",
"description": "Beschreibung",
"image": "Bild"
},
"editor": {
"time_in_seconds": "Zeit in Sekunden",
"right_or_true?": "Richtig?",
"add_new_answer": "Neue Antwort hinzufügen",
"add_new_question": "Neue Frage hinzufügen",
"delete_question": "Frage löschen",
"delete_answer": "Antwort löschen"
},
"import": {
"need_help": "",
"visit_docs": ""
},
"admin": {
"already_registered_as_admin": ""
},
"admin_page": {
"already_registered_as_admin": "Ein Admin wurde schon für dieses Spiel registriert.",
"start_game": "Spiel starten",
"time_left": "Zeit übrig",
"get_results": "Ergebnisse abfragen"
},
"import_page": {
"need_help": "Brauchst du Hilfe?",
"visit_docs": "Besuche die Dokumentation"
}
}
+102 -102
View File
@@ -1,104 +1,104 @@
{
"index_page": {
"slogan": "The open-source quiz-platform!",
"meta": {
"description": "ClassQuiz is a quiz app like KAHOOT! for students, which is open source and free to use",
"title": "Home"
},
"features_description": {
"1": "ClassQuiz is a quiz-platform that allows you to create and manage quizzes.",
"2": "The main feature is a KAHOOT!-import function that allows you to import quizzes from KAHOOT!-quizzes."
}
},
"overview_page": {
"created_at": "Created at",
"question_count": "Question count"
},
"edit_page": {
"success_update_title": "Successfully updated quiz!",
"success_update_body": "Updated the quiz successfully!"
},
"create_page": {
"success": {
"title": "Successfully created quiz!",
"body": "Created the quiz successfully!"
}
},
"register_page": {
"greeting": "Nice to meet you!",
"create_account": "Create account",
"forgot_password?": "Forgot password?",
"already_have_account?": "Already have an account?"
},
"login_page": {
"welcome_back": "Welcome back!",
"login_or_create_account": "Login or create an account",
"already_have_account": "Don't have an account?",
"modal": {
"success": {
"success_check_mail": "Login Succeded! Check your mailbox!",
"success": "Login Succeded!",
"description": {
"success_check_mail": "Please check your mailbox, since you should have received a mail, with a link you can click to login.",
"success": "You've successfully logged in!"
}
},
"error": {
"wrong_creds": "Wrong email or password!",
"unexpected": "Unexpected error!",
"description": {
"wrong_creds": "Please make sure that your password and your email are correct!",
"unexpected": "There was the good old unexpected error!"
}
}
}
},
"words": {
"question": "Question",
"answer": "Answer",
"stats": "Stats",
"features": "Features",
"login": "Login",
"email": "Email",
"username": "Username",
"password": "Password",
"play": "Play",
"edit": "Edit",
"delete": "Delete",
"public": "Public",
"start": "Start",
"create": "Create",
"import": "Import",
"logout": "Logout",
"title": "Title",
"url": "URL",
"submit": "Submit",
"connect": "Connect",
"pin": "PIN",
"kick": "Kick",
"register": "Register",
"docs": "Docs",
"close": "Close",
"save": "Save",
"description": "Description",
"image": "Image"
},
"editor": {
"time_in_seconds": "Time in seconds",
"right_or_true?": "Right?",
"add_new_answer": "Add new answer",
"add_new_question": "Add new question",
"delete_question": "Delete question",
"delete_answer": "Delete answer"
},
"import_page": {
"need_help": "Need help?",
"visit_docs": "Visit the documentation"
},
"admin_page": {
"already_registered_as_admin": "There is already an admin registered for this game.",
"start_game": "Start game",
"time_left": "Time left",
"get_results": "Get results"
}
"index_page": {
"slogan": "The open-source quiz-platform!",
"meta": {
"description": "ClassQuiz is a quiz app like KAHOOT! for students, which is open source and free to use",
"title": "Home"
},
"features_description": {
"1": "ClassQuiz is a quiz-platform that allows you to create and manage quizzes.",
"2": "The main feature is a KAHOOT!-import function that allows you to import quizzes from KAHOOT!-quizzes."
}
},
"overview_page": {
"created_at": "Created at",
"question_count": "Question count"
},
"edit_page": {
"success_update_title": "Successfully updated quiz!",
"success_update_body": "Updated the quiz successfully!"
},
"create_page": {
"success": {
"title": "Successfully created quiz!",
"body": "Created the quiz successfully!"
}
},
"register_page": {
"greeting": "Nice to meet you!",
"create_account": "Create account",
"forgot_password?": "Forgot password?",
"already_have_account?": "Already have an account?"
},
"login_page": {
"welcome_back": "Welcome back!",
"login_or_create_account": "Login or create an account",
"already_have_account": "Don't have an account?",
"modal": {
"success": {
"success_check_mail": "Login Succeded! Check your mailbox!",
"success": "Login Succeded!",
"description": {
"success_check_mail": "Please check your mailbox, since you should have received a mail, with a link you can click to login.",
"success": "You've successfully logged in!"
}
},
"error": {
"wrong_creds": "Wrong email or password!",
"unexpected": "Unexpected error!",
"description": {
"wrong_creds": "Please make sure that your password and your email are correct!",
"unexpected": "There was the good old unexpected error!"
}
}
}
},
"words": {
"question": "Question",
"answer": "Answer",
"stats": "Stats",
"features": "Features",
"login": "Login",
"email": "Email",
"username": "Username",
"password": "Password",
"play": "Play",
"edit": "Edit",
"delete": "Delete",
"public": "Public",
"start": "Start",
"create": "Create",
"import": "Import",
"logout": "Logout",
"title": "Title",
"url": "URL",
"submit": "Submit",
"connect": "Connect",
"pin": "PIN",
"kick": "Kick",
"register": "Register",
"docs": "Docs",
"close": "Close",
"save": "Save",
"description": "Description",
"image": "Image"
},
"editor": {
"time_in_seconds": "Time in seconds",
"right_or_true?": "Right?",
"add_new_answer": "Add new answer",
"add_new_question": "Add new question",
"delete_question": "Delete question",
"delete_answer": "Delete answer"
},
"import_page": {
"need_help": "Need help?",
"visit_docs": "Visit the documentation"
},
"admin_page": {
"already_registered_as_admin": "There is already an admin registered for this game.",
"start_game": "Start game",
"time_left": "Time left",
"get_results": "Get results"
}
}
+10 -10
View File
@@ -1,4 +1,4 @@
<script lang='ts'>
<script lang="ts">
import type { Question } from '../../app';
import { socket } from '$lib/socket';
@@ -42,39 +42,39 @@
};
</script>
<div class='flex flex-col justify-center w-screen h-1/6'>
<h1 class='text-6xl text-center'>
<div class="flex flex-col justify-center w-screen h-1/6">
<h1 class="text-6xl text-center">
{question.question}
</h1>
<span class='text-center py-2 text-lg'>{timer_res}</span>
<span class="text-center py-2 text-lg">{timer_res}</span>
</div>
{#if question.image !== null}
<div>
<img src='{question.image}' class='w-full h-full object-cover' alt='Question image'>
<img src={question.image} class="w-full h-full object-cover" alt="Question image" />
</div>
{/if}
{#if timer_res !== '0'}
<div class='flex flex-wrap'>
<div class="flex flex-wrap">
{#each question.answers as answer}
<button
class='w-1/2 text-3xl bg-amber-700 my-2 disabled:opacity-60 border border-white'
class="w-1/2 text-3xl bg-amber-700 my-2 disabled:opacity-60 border border-white"
disabled={selected_answer !== undefined}
on:click={() => selectAnswer(answer.answer)}>{answer.answer}</button
>
{/each}
</div>
{:else}
<div class='flex flex-wrap'>
<div class="flex flex-wrap">
{#each question.answers as answer}
{#if answer.right}
<button
class='w-1/2 text-3xl bg-green-600 border border-white'
class="w-1/2 text-3xl bg-green-600 border border-white"
disabled
class:opacity-30={answer.answer !== selected_answer}>{answer.answer}</button
>
{:else}
<button
class='w-1/2 text-3xl bg-red-500 border border-white'
class="w-1/2 text-3xl bg-red-500 border border-white"
disabled
class:opacity-30={answer.answer !== selected_answer}>{answer.answer}</button
>