mirror of
https://github.com/danbulant/Portfolio
synced 2026-05-24 12:35:31 +00:00
fix: submitting
This commit is contained in:
parent
44a887d211
commit
3177bcfbe0
3 changed files with 56 additions and 49 deletions
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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: []
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue