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">
export type GradeBackend = {
subject: string;
grade: number;
value: number;
semester: Semester;
};
</script>
@ -9,55 +9,10 @@
<script lang="ts">
import GradesRow, { type Grade, type Semester } from './GradesRow.svelte';
let gradesLocal: Array<Grade> = [
{ subject: 'Chování', semesters: {} },
{ subject: 'Český jazyk', semesters: {} },
{ subject: 'Matematika', semesters: {} },
{ subject: 'Anglický jazyk', semesters: {} },
{ subject: 'Chemie', semesters: {} },
{ subject: 'Fyzika', semesters: {} },
{ subject: 'Dějepis', semesters: {} },
{ subject: 'Tělesná výchova', semesters: {} }
];
/*let gradesLocal: Array<Grade> = Array.from({ length: 8 }, () => {
return {
subject: '',
semesters: {
'1/8': undefined,
'2/8': undefined,
'1/9': undefined,
'2/9': undefined
}
};
});*/
export let error: string | Array<unknown> = '';
export let grades: Array<GradeBackend>;
// Convert local Grade type to expanded GradesBackend type
const convertGradeToGradeBackend = () => {
// Delay to wait for select to be updated
setTimeout(() => {
const gradesTemp: Array<GradeBackend> = [];
for (let index = 0; index < gradesLocal.length; index++) {
const grade = gradesLocal[index];
for (const semester in grade.semesters) {
const semesterTyped = semester as Semester;
if (grade.semesters[semesterTyped] && grade.subject) {
const gradeString = grade.semesters[semesterTyped]!;
gradesTemp.push({
subject: grade.subject,
grade: Number(gradeString),
semester: semesterTyped
});
}
}
}
grades = [...gradesTemp];
});
};
const convertGradeBackendToGrade = (gradesBackend: Array<GradeBackend>) => {
const grades: Array<Grade> = [];
for (let index = 0; index < gradesBackend.length; index++) {
@ -70,10 +25,57 @@
};
grades.push(grade);
}
grade.semesters[gradeBackend.semester] = gradeBackend.grade.toString();
grade.semesters[gradeBackend.semester] = gradeBackend.value.toString();
}
return grades;
};
let gradesLocal: Array<Grade> =
grades.length > 0
? convertGradeBackendToGrade(grades)
: [
{ subject: 'Chování', semesters: {} },
{ subject: 'Český jazyk', semesters: {} },
{ subject: 'Matematika', semesters: {} },
{ subject: 'Anglický jazyk', semesters: {} },
{ subject: 'Chemie', semesters: {} },
{ subject: 'Fyzika', semesters: {} },
{ subject: 'Dějepis', semesters: {} },
{ subject: 'Tělesná výchova', semesters: {} }
];
/*let gradesLocal: Array<Grade> = Array.from({ length: 8 }, () => {
return {
subject: '',
semesters: {
'1/8': undefined,
'2/8': undefined,
'1/9': undefined,
'2/9': undefined
}
};
});*/
// Convert local Grade type to expanded GradesBackend type
const convertGradeToGradeBackend = () => {
// Delay to wait for select to be updated
setTimeout(() => {
const gradesTemp: Array<GradeBackend> = [];
for (let index = 0; index < gradesLocal.length; index++) {
const grade = gradesLocal[index];
for (const semester in grade.semesters) {
const semesterTyped = semester as Semester;
if (grade.semesters[semesterTyped] && grade.subject) {
const gradeString = grade.semesters[semesterTyped]!;
gradesTemp.push({
subject: grade.subject,
value: Number(gradeString),
semester: semesterTyped
});
}
}
}
grades = [...gradesTemp];
});
};
</script>
<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';
export interface CandidateData {
@ -14,6 +15,7 @@ export interface CandidateData {
personalIdNumber: string;
schoolName: string;
healthInsurance: string;
grades: Array<GradeBackend>;
};
parents: Array<{
name: string;
@ -72,7 +74,8 @@ export const candidateData = writable<CandidateData>({
sex: '',
personalIdNumber: '',
schoolName: '',
healthInsurance: ''
healthInsurance: '',
grades: []
},
parents: []
});

View file

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