mirror of
https://github.com/danbulant/Portfolio
synced 2026-06-08 09:12:26 +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">
|
<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,55 +9,10 @@
|
||||||
<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> = [
|
|
||||||
{ 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 error: string | Array<unknown> = '';
|
||||||
|
|
||||||
export let grades: Array<GradeBackend>;
|
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 convertGradeBackendToGrade = (gradesBackend: Array<GradeBackend>) => {
|
||||||
const grades: Array<Grade> = [];
|
const grades: Array<Grade> = [];
|
||||||
for (let index = 0; index < gradesBackend.length; index++) {
|
for (let index = 0; index < gradesBackend.length; index++) {
|
||||||
|
|
@ -70,10 +25,57 @@
|
||||||
};
|
};
|
||||||
grades.push(grade);
|
grades.push(grade);
|
||||||
}
|
}
|
||||||
grade.semesters[gradeBackend.semester] = gradeBackend.grade.toString();
|
grade.semesters[gradeBackend.semester] = gradeBackend.value.toString();
|
||||||
}
|
}
|
||||||
return grades;
|
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>
|
</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">
|
||||||
|
|
|
||||||
|
|
@ -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: []
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue