frontend: Save submissions to display in interface later
This commit is contained in:
parent
404f29e6ea
commit
0f2dafa3b1
3 changed files with 58 additions and 0 deletions
|
@ -17,6 +17,7 @@
|
|||
|
||||
import { my } from '$lib/stores/my.js';
|
||||
import { settings } from '$lib/stores/settings.js';
|
||||
import { submissions } from '$lib/stores/submissions.js';
|
||||
import { timeouted, waitDiff, waitInProgress } from '$lib/wait.js';
|
||||
|
||||
import DateFormat from './DateFormat.svelte';
|
||||
|
@ -36,6 +37,20 @@
|
|||
message = "";
|
||||
last_submission = JSON.parse(JSON.stringify(responses));
|
||||
|
||||
submissions.update((u) => {
|
||||
for (const k in last_submission.flags) {
|
||||
u.flags[k] = last_submission.flags[k];
|
||||
}
|
||||
|
||||
for (const k in last_submission.mcqs) {
|
||||
u.mcqs[k] = last_submission.mcqs[k];
|
||||
}
|
||||
|
||||
for (const k in last_submission.justifications) {
|
||||
u.justifications[k] = last_submission.justifications[k];
|
||||
}
|
||||
})
|
||||
|
||||
if ($my && $my.team_id === 0) {
|
||||
let allGoodResponse = true;
|
||||
for (const f in flags) {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
import { my } from '$lib/stores/my.js';
|
||||
import { settings } from '$lib/stores/settings.js';
|
||||
import { submissions } from '$lib/stores/submissions.js';
|
||||
|
||||
export { className as class };
|
||||
let className = '';
|
||||
|
@ -247,6 +248,15 @@
|
|||
title="Flag trouvé à {flag.found}"
|
||||
value={value}
|
||||
>
|
||||
{:else if $submissions && $submissions.flags && $submissions.flags[flag.id]}
|
||||
<input
|
||||
class="form-control is-valid"
|
||||
disabled
|
||||
id="sol_{flag.type}{flag.id}_0"
|
||||
type="text"
|
||||
title="Flag trouvé à {flag.found}"
|
||||
value={$submissions.flags[flag.id]}
|
||||
>
|
||||
{:else}
|
||||
<Icon
|
||||
name="check"
|
||||
|
|
33
frontend/fic/src/lib/stores/submissions.js
Normal file
33
frontend/fic/src/lib/stores/submissions.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
import { writable } from 'svelte/store';
|
||||
|
||||
function createSubmissionsStore() {
|
||||
let init = {
|
||||
flags: { },
|
||||
mcqs: { },
|
||||
justifications: { },
|
||||
};
|
||||
try {
|
||||
if (window.localStorage && window.localStorage.getItem("submissionsStore")) {
|
||||
init = JSON.parse(window.localStorage.getItem("submissionsStore"));
|
||||
}
|
||||
} catch {
|
||||
init = {
|
||||
flags: { },
|
||||
mcqs: { },
|
||||
justifications: { },
|
||||
};
|
||||
}
|
||||
|
||||
const { subscribe, set, update } = writable(init);
|
||||
|
||||
return {
|
||||
subscribe,
|
||||
|
||||
update: (u) => {
|
||||
update(u);
|
||||
if (window.localStorage) localStorage.setItem("submissionsStore", JSON.stringify(init));
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export const submissions = createSubmissionsStore();
|
Reference in a new issue