fix: submitting

This commit is contained in:
EETagent 2023-01-17 16:35:27 +01:00
parent 44a887d211
commit 3177bcfbe0
3 changed files with 56 additions and 49 deletions

View file

@ -1,7 +1,7 @@
<script context="module" lang="ts"> <script context="module" lang="ts">
export type GradeBackend = { export type GradeBackend = {
subject: string; subject: string;
grade: number; value: number;
semester: Semester; semester: Semester;
}; };
</script> </script>
@ -9,7 +9,31 @@
<script lang="ts"> <script lang="ts">
import GradesRow, { type Grade, type Semester } from './GradesRow.svelte'; import GradesRow, { type Grade, type Semester } from './GradesRow.svelte';
let gradesLocal: Array<Grade> = [ export let error: string | Array<unknown> = '';
export let grades: Array<GradeBackend>;
const convertGradeBackendToGrade = (gradesBackend: Array<GradeBackend>) => {
const grades: Array<Grade> = [];
for (let index = 0; index < gradesBackend.length; index++) {
const gradeBackend = gradesBackend[index];
let grade = grades.find((g) => g.subject === gradeBackend.subject);
if (!grade) {
grade = {
subject: gradeBackend.subject,
semesters: {}
};
grades.push(grade);
}
grade.semesters[gradeBackend.semester] = gradeBackend.value.toString();
}
return grades;
};
let gradesLocal: Array<Grade> =
grades.length > 0
? convertGradeBackendToGrade(grades)
: [
{ subject: 'Chování', semesters: {} }, { subject: 'Chování', semesters: {} },
{ subject: 'Český jazyk', semesters: {} }, { subject: 'Český jazyk', semesters: {} },
{ subject: 'Matematika', semesters: {} }, { subject: 'Matematika', semesters: {} },
@ -30,11 +54,6 @@
} }
}; };
});*/ });*/
export let error: string | Array<unknown> = '';
export let grades: Array<GradeBackend>;
// Convert local Grade type to expanded GradesBackend type // Convert local Grade type to expanded GradesBackend type
const convertGradeToGradeBackend = () => { const convertGradeToGradeBackend = () => {
// Delay to wait for select to be updated // Delay to wait for select to be updated
@ -48,7 +67,7 @@
const gradeString = grade.semesters[semesterTyped]!; const gradeString = grade.semesters[semesterTyped]!;
gradesTemp.push({ gradesTemp.push({
subject: grade.subject, subject: grade.subject,
grade: Number(gradeString), value: Number(gradeString),
semester: semesterTyped semester: semesterTyped
}); });
} }
@ -57,23 +76,6 @@
grades = [...gradesTemp]; grades = [...gradesTemp];
}); });
}; };
const convertGradeBackendToGrade = (gradesBackend: Array<GradeBackend>) => {
const grades: Array<Grade> = [];
for (let index = 0; index < gradesBackend.length; index++) {
const gradeBackend = gradesBackend[index];
let grade = grades.find((g) => g.subject === gradeBackend.subject);
if (!grade) {
grade = {
subject: gradeBackend.subject,
semesters: {}
};
grades.push(grade);
}
grade.semesters[gradeBackend.semester] = gradeBackend.grade.toString();
}
return grades;
};
</script> </script>
<div class="mx-auto mt-8 flex text-gray-400 lg:w-4/5"> <div class="mx-auto mt-8 flex text-gray-400 lg:w-4/5">

View file

@ -1,3 +1,4 @@
import type { GradeBackend } from '$lib/components/grades/GradesTable.svelte';
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
export interface CandidateData { export interface CandidateData {
@ -14,6 +15,7 @@ export interface CandidateData {
personalIdNumber: string; personalIdNumber: string;
schoolName: string; schoolName: string;
healthInsurance: string; healthInsurance: string;
grades: Array<GradeBackend>;
}; };
parents: Array<{ parents: Array<{
name: string; name: string;
@ -72,7 +74,8 @@ export const candidateData = writable<CandidateData>({
sex: '', sex: '',
personalIdNumber: '', personalIdNumber: '',
schoolName: '', schoolName: '',
healthInsurance: '' healthInsurance: '',
grades: []
}, },
parents: [] parents: []
}); });

View file

@ -116,7 +116,7 @@
.object() .object()
.shape({ .shape({
subject: yup.string().required(), subject: yup.string().required(),
grade: yup.number().required(), value: yup.number().required(),
semester: yup.string().required() semester: yup.string().required()
}) })
.required() .required()
@ -278,9 +278,11 @@
delete values.candidate.zip; delete values.candidate.zip;
await apiFillDetails(values); await apiFillDetails(values);
goto('/dashboard'); goto('/dashboard');
} catch (e) { } catch (e) {
values = oldValues; values = oldValues;
$form = oldValues;
console.error('error while submitting data: ' + e); console.error('error while submitting data: ' + e);
} }
} }