diff --git a/frontend/src/i18n/locale/de.json b/frontend/src/i18n/locale/de.json
index 0b82d707..11e14436 100644
--- a/frontend/src/i18n/locale/de.json
+++ b/frontend/src/i18n/locale/de.json
@@ -76,6 +76,12 @@
"failed": "fehlgeschlagen",
"wrong": "etwas ist schief gelaufen",
"created": "erstellt",
- "submit": "Einreichen",
- "markAsDone": "Als fertig markieren"
+ "submitSolution": "Lösung einreichen",
+ "submitNewSolution": "Neue Lösung einreichen",
+ "markAsDone": "Als fertig markieren",
+ "groupSubmissions": "Einreichungen dieser Gruppe",
+ "taskCompleted": "Aufgabe erledigt.",
+ "submittedBy": "Eingereicht von",
+ "timestamp": "Zeitpunkt",
+ "loadSubmission": "Einladen"
}
diff --git a/frontend/src/i18n/locale/en.json b/frontend/src/i18n/locale/en.json
index 655ab634..5ef7ffa3 100644
--- a/frontend/src/i18n/locale/en.json
+++ b/frontend/src/i18n/locale/en.json
@@ -76,6 +76,12 @@
"failed": "failed",
"wrong": "something went wrong",
"created": "created",
- "submit": "Submit",
- "markAsDone": "Mark as done"
+ "submitSolution": "Submit solution",
+ "submitNewSolution": "Submit new solution",
+ "markAsDone": "Mark as completed",
+ "groupSubmissions": "This group's submissions",
+ "taskCompleted": "Task completed.",
+ "submittedBy": "Submitted by",
+ "timestamp": "Timestamp",
+ "loadSubmission": "Load"
}
diff --git a/frontend/src/i18n/locale/fr.json b/frontend/src/i18n/locale/fr.json
index a3d3d89b..8a359dc3 100644
--- a/frontend/src/i18n/locale/fr.json
+++ b/frontend/src/i18n/locale/fr.json
@@ -75,5 +75,13 @@
"sent": "envoyé",
"failed": "échoué",
"wrong": "quelque chose n'a pas fonctionné",
- "created": "créé"
+ "created": "créé",
+ "submitSolution": "Soumettre la solution",
+ "submitNewSolution": "Soumettre une nouvelle solution",
+ "markAsDone": "Marquer comme terminé",
+ "groupSubmissions": "Soumissions de ce groupe",
+ "taskCompleted": "Tâche terminée.",
+ "submittedBy": "Soumis par",
+ "timestamp": "Horodatage",
+ "loadSubmission": "Charger"
}
diff --git a/frontend/src/i18n/locale/nl.json b/frontend/src/i18n/locale/nl.json
index 0f4aca6a..58069fba 100644
--- a/frontend/src/i18n/locale/nl.json
+++ b/frontend/src/i18n/locale/nl.json
@@ -76,6 +76,12 @@
"failed": "mislukt",
"wrong": "er ging iets verkeerd",
"created": "gecreëerd",
- "submit": "Indienen",
- "markAsDone": "Markeren als afgewerkt"
+ "submitSolution": "Oplossing indienen",
+ "submitNewSolution": "Nieuwe oplossing indienen",
+ "markAsDone": "Markeren als afgewerkt",
+ "groupSubmissions": "Indieningen van deze groep",
+ "taskCompleted": "Taak afgewerkt.",
+ "submittedBy": "Ingediend door",
+ "timestamp": "Tijdstip",
+ "loadSubmission": "Inladen"
}
diff --git a/frontend/src/views/learning-paths/learning-object/LearningObjectView.vue b/frontend/src/views/learning-paths/learning-object/LearningObjectView.vue
index 330e7fc6..9b3568d7 100644
--- a/frontend/src/views/learning-paths/learning-object/LearningObjectView.vue
+++ b/frontend/src/views/learning-paths/learning-object/LearningObjectView.vue
@@ -1,29 +1,29 @@
diff --git a/frontend/src/views/learning-paths/learning-object/content/LearningObjectContentView.vue b/frontend/src/views/learning-paths/learning-object/content/LearningObjectContentView.vue
index 8006d322..54f38973 100644
--- a/frontend/src/views/learning-paths/learning-object/content/LearningObjectContentView.vue
+++ b/frontend/src/views/learning-paths/learning-object/content/LearningObjectContentView.vue
@@ -38,7 +38,6 @@
}
function attachQuestionListeners(): void {
- let counter = 0;
forEachQuestion((index, _name, type, element) => {
getGiftAdapterForType(type)?.installListener(
element,
@@ -46,7 +45,6 @@
submissionData.value = copyArrayWith(index, newAnswer, submissionData.value ?? [])
}
);
- counter++;
});
}
@@ -62,7 +60,12 @@
submissionData.value = answers;
}
- onMounted(() => nextTick(() => attachQuestionListeners()));
+ onMounted(() =>
+ nextTick(() => {
+ attachQuestionListeners()
+ setAnswers(props.submissionData ?? []);
+ })
+ );
watch(() => props.learningObjectContent, async () => {
await nextTick();
diff --git a/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsTable.vue b/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsTable.vue
new file mode 100644
index 00000000..96cae4c7
--- /dev/null
+++ b/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsTable.vue
@@ -0,0 +1,55 @@
+
+
+
+
+ {{ t("groupSubmissions") }}
+
+
+
+
+ {{ t("loadSubmission") }}
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsView.vue b/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsView.vue
index dae59651..25d3ce6f 100644
--- a/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsView.vue
+++ b/frontend/src/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsView.vue
@@ -5,7 +5,12 @@
import {useSubmissionsQuery} from "@/queries/submissions.ts";
import UsingQueryResult from "@/components/UsingQueryResult.vue";
import SubmitButton from "@/views/learning-paths/learning-object/submissions/SubmitButton.vue";
- import {watch} from "vue";
+ import {computed, watch} from "vue";
+ import LearningObjectSubmissionsTable
+ from "@/views/learning-paths/learning-object/submissions/LearningObjectSubmissionsTable.vue";
+ import {useI18n} from "vue-i18n";
+
+ const { t } = useI18n();
const props = defineProps<{
submissionData?: SubmissionData,
@@ -28,17 +33,38 @@
() => true
);
- function loadSubmission(submission: SubmissionDTO) {
- emit("update:submissionData", JSON.parse(submission.content));
- console.log(`emitted: ${JSON.parse(submission.content)}`);
+ function emitSubmissionData(submissionData: SubmissionData) {
+ emit("update:submissionData", submissionData);
+ }
+
+ function emitSubmission(submission: SubmissionDTO) {
+ emitSubmissionData(JSON.parse(submission.content));
}
watch(submissionQuery.data, () => {
const submissions = submissionQuery.data.value;
if (submissions && submissions.length > 0) {
- loadSubmission(submissions[submissions.length - 1]);
+ emitSubmission(submissions[submissions.length - 1]);
+ } else {
+ emitSubmissionData([]);
}
});
+
+ const lastSubmission = computed(() => {
+ const submissions = submissionQuery.data.value;
+ if (!submissions || submissions.length === 0) {
+ return undefined;
+ }
+ return JSON.parse(submissions[submissions.length - 1].content);
+ });
+
+ const showSubmissionTable = computed(() =>
+ props.submissionData !== undefined && props.submissionData.length > 0
+ );
+
+ const showIsDoneMessage = computed(() =>
+ lastSubmission.value !== undefined && lastSubmission.value.length === 0
+ );
@@ -51,8 +77,24 @@
:submission-data="props.submissionData"
:submissions="submissions.data"
/>
+
+
+
diff --git a/frontend/src/views/learning-paths/learning-object/submissions/SubmitButton.vue b/frontend/src/views/learning-paths/learning-object/submissions/SubmitButton.vue
index 6aed1099..21cbf69d 100644
--- a/frontend/src/views/learning-paths/learning-object/submissions/SubmitButton.vue
+++ b/frontend/src/views/learning-paths/learning-object/submissions/SubmitButton.vue
@@ -81,12 +81,12 @@
if (props.submissionData && props.submissionData.length === 0) {
return t("markAsDone");
}
- return t("submit");
+ return t(props.submissions.length > 0 ? "submitNewSolution" : "submitSolution");
});
-