diff --git a/frontend/src/lib/admin.ts b/frontend/src/lib/admin.ts
index 4e52258..e5a58ce 100644
--- a/frontend/src/lib/admin.ts
+++ b/frontend/src/lib/admin.ts
@@ -23,21 +23,6 @@ export const getWinnersSorted = (
) => {
const winners = {};
const q_count = quiz_data.questions.length;
- for (let i = 0; i < q_count; i++) {
- const q_res = final_results[i];
- if (q_res === null) {
- continue;
- }
- for (let j = 0; j < q_res.length; j++) {
- const res = q_res[j];
- if (res['right']) {
- if (winners[res['username']] === undefined) {
- winners[res['username']] = 0;
- }
- winners[res['username']] += 1;
- }
- }
- }
function sortObjectbyValue(obj) {
const asc = false;
@@ -48,7 +33,27 @@ export const getWinnersSorted = (
return ret;
}
- return sortObjectbyValue(winners);
+ try {
+ for (let i = 0; i < q_count; i++) {
+ const q_res = final_results[i];
+ if (q_res === null) {
+ continue;
+ }
+ for (let j = 0; j < q_res.length; j++) {
+ const res = q_res[j];
+ if (res['right']) {
+ if (winners[res['username']] === undefined) {
+ winners[res['username']] = 0;
+ }
+ winners[res['username']] += 1;
+ }
+ }
+ }
+
+ return sortObjectbyValue(winners);
+ } catch {
+ return undefined;
+ }
};
export interface Player {
diff --git a/frontend/src/lib/i18n/locales/en.json b/frontend/src/lib/i18n/locales/en.json
index e3c50ca..1d97942 100644
--- a/frontend/src/lib/i18n/locales/en.json
+++ b/frontend/src/lib/i18n/locales/en.json
@@ -132,7 +132,8 @@
"get_final_results": "Get final results",
"export_results": "Export results",
"show_next_question": "Show next question",
- "start_by_showing_first_question": "Start by showing the first question!"
+ "start_by_showing_first_question": "Start by showing the first question!",
+ "no_answers": "No answers!"
},
"password_reset_page": {
"reset_password": "Reset password"
diff --git a/frontend/src/lib/play/end.svelte b/frontend/src/lib/play/end.svelte
index e625444..76b6407 100644
--- a/frontend/src/lib/play/end.svelte
+++ b/frontend/src/lib/play/end.svelte
@@ -18,24 +18,17 @@
right: string;
}
+ let data_available = false;
+
const getWinnersSorted = () => {
let winners = {};
let q_count = quiz_data.questions.length;
- for (let i = 0; i < q_count; i++) {
- let q_res = final_results[i];
- if (q_res === null) {
- continue;
- }
- for (let j = 0; j < q_res.length; j++) {
- let res = q_res[j];
- if (res['right']) {
- if (winners[res['username']] === undefined) {
- winners[res['username']] = 0;
- }
- winners[res['username']] += 1;
- }
- }
- }
+ console.log(
+ JSON.stringify(final_results),
+ JSON.stringify(final_results) === '{}',
+ 'HI!!!!!',
+ JSON.stringify(final_results) === JSON.stringify({})
+ );
function sortObjectbyValue(obj) {
const asc = false;
@@ -46,43 +39,71 @@
return ret;
}
- return sortObjectbyValue(winners);
+ try {
+ for (let i = 0; i < q_count; i++) {
+ let q_res = final_results[i];
+ if (q_res === null) {
+ continue;
+ }
+ for (let j = 0; j < q_res.length; j++) {
+ let res = q_res[j];
+ if (res['right']) {
+ if (winners[res['username']] === undefined) {
+ winners[res['username']] = 0;
+ }
+ winners[res['username']] += 1;
+ }
+ }
+ }
+ winners_arr = Object.keys(winners);
+ data_available = true;
+ return sortObjectbyValue(winners);
+ } catch {
+ data_available = false;
+ }
};
let winners = getWinnersSorted();
- let winners_arr = Object.keys(winners);
- console.log(winners);
+ let winners_arr;
{$t('play_page.end_sentence')}
-
-
-
-
- {$t('play_page.1st_place')}: {winners_arr[0]}
- with {winners[winners_arr[0]]} out of {quiz_data.questions.length}
-
+ {#if data_available}
+
+
+
+ {$t('play_page.1st_place')}: {winners_arr[0]}
+ with {winners[winners_arr[0]]} out of {quiz_data.questions.length}
+
+
+ {#if winners_arr.length >= 2}
+
+
+ {$t('play_page.2nd_place')}: {winners_arr[1]}
+ with {winners[winners_arr[1]]} out of {quiz_data.questions
+ .length}
+
+
+ {/if}
+ {#if winners_arr.length >= 3}
+
+
+ {$t('play_page.3rd place')}: {winners_arr[2]}
+
+ {$t('play_page.with_out_of', {
+ correct_questions: winners[winners_arr[2]],
+ total_question_count: quiz_data.questions.length
+ })}
+
+
+
+ {/if}
- {#if winners_arr.length >= 2}
-
-
- {$t('play_page.2nd_place')}: {winners_arr[1]}
- with {winners[winners_arr[1]]} out of {quiz_data.questions.length}
-
-
- {/if}
- {#if winners_arr.length >= 3}
-
-
- {$t('play_page.3rd place')}: {winners_arr[2]}
-
- {$t('play_page.with_out_of', {
- correct_questions: winners[winners_arr[2]],
- total_question_count: quiz_data.questions.length
- })}
-
-
-
- {/if}
-
+ {:else}
+
+
{$t('admin_page.no_answers')}
+
+ {/if}
diff --git a/frontend/src/routes/admin/+page.svelte b/frontend/src/routes/admin/+page.svelte
index 391a2a4..e2045c0 100644
--- a/frontend/src/routes/admin/+page.svelte
+++ b/frontend/src/routes/admin/+page.svelte
@@ -29,7 +29,7 @@
let game_started = false;
let quiz_data: QuizData;
//let question_number = '0';
- let question_results = null;
+ // let question_results = null;
let final_results: Array
| Array> = [null];
let success = false;
let dataexport_download_a;
@@ -58,7 +58,7 @@
errorMessage = $t('admin_page.already_registered_as_admin');
});
- socket.on('question_results', (int_data) => {
+ /* socket.on('question_results', (int_data) => {
try {
int_data = JSON.parse(int_data);
} catch (e) {
@@ -66,7 +66,7 @@
return;
}
question_results = int_data;
- });
+ });*/
socket.on('export_token', (int_data) => {
warnToLeave = false;
dataexport_download_a.href = `/api/v1/quiz/export_data/${int_data}?ts=${new Date().getTime()}&game_pin=${game_pin}`;
diff --git a/frontend/src/routes/play/+page.svelte b/frontend/src/routes/play/+page.svelte
index 0db51b1..2d11cf2 100644
--- a/frontend/src/routes/play/+page.svelte
+++ b/frontend/src/routes/play/+page.svelte
@@ -9,6 +9,9 @@
import { navbarVisible } from '$lib/stores';
import ShowEndScreen from '$lib/play/end.svelte';
import { QuizQuestionType } from '$lib/quiz_types';
+ import { getLocalization } from '$lib/i18n';
+
+ const { t } = getLocalization();
// Exports
export let data;
@@ -83,7 +86,11 @@
socket.on('question_results', (data) => {
restart();
- answer_results = JSON.parse(data);
+ try {
+ answer_results = JSON.parse(data);
+ } catch {
+ answer_results = null;
+ }
});
socket.on('final_results', (data) => {
@@ -124,12 +131,18 @@
/>
{/key}
{:else if gameMeta.started && answer_results !== undefined}
- {#key unique}
-
- {/key}
+ {#if answer_results === null}
+
+
{$t('admin_page.no_answers')}
+
+ {:else}
+ {#key unique}
+
+ {/key}
+ {/if}
{/if}