Update GradeCard styles, add points sum
This commit is contained in:
parent
dd333a6674
commit
dba2b24267
@ -11,3 +11,12 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.small-row td {
|
||||||
|
padding: 0.2rem;
|
||||||
|
padding-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-required td {
|
||||||
|
background-color: #fff2cc;
|
||||||
|
}
|
||||||
|
@ -8,11 +8,12 @@ import {
|
|||||||
updateGradesFirstTerm,
|
updateGradesFirstTerm,
|
||||||
updateGradesSecondTerm,
|
updateGradesSecondTerm,
|
||||||
} from '../api/grades'
|
} from '../api/grades'
|
||||||
|
import { getGroup } from '../api/groups'
|
||||||
import { gradeOptions } from '../utils/gradeCard'
|
import { gradeOptions } from '../utils/gradeCard'
|
||||||
import styles from './GradeCard.module.css'
|
import styles from './GradeCard.module.css'
|
||||||
|
|
||||||
const GradeCard = () => {
|
const GradeCard = () => {
|
||||||
const { handleSubmit, setValue, control } = useForm()
|
const { handleSubmit, setValue, control, watch, getValues } = useForm()
|
||||||
const { id } = useParams<{ id: string }>()
|
const { id } = useParams<{ id: string }>()
|
||||||
const [supervisorId] = useLocalStorageState('userId')
|
const [supervisorId] = useLocalStorageState('userId')
|
||||||
|
|
||||||
@ -39,18 +40,23 @@ const GradeCard = () => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
const {
|
||||||
|
data: groupDetails,
|
||||||
|
refetch: refetchGroup,
|
||||||
|
isLoading: isGroupLoading,
|
||||||
|
} = useQuery(['getGroup', id], () => getGroup(Number(id)))
|
||||||
|
|
||||||
const { mutate: mutateGradesFirstTerm } = useMutation(
|
const { mutateAsync: mutateGradesFirstTerm } = useMutation(
|
||||||
'update_grades_first',
|
'update_grades_first',
|
||||||
(payload: any) => updateGradesFirstTerm(1, 1, payload),
|
(payload: any) => updateGradesFirstTerm(1, 1, payload),
|
||||||
)
|
)
|
||||||
|
|
||||||
const { mutate: mutateGradesSecondTerm } = useMutation(
|
const { mutateAsync: mutateGradesSecondTerm } = useMutation(
|
||||||
'update_grades_second',
|
'update_grades_second',
|
||||||
(payload: any) => updateGradesSecondTerm(1, 1, payload),
|
(payload: any) => updateGradesSecondTerm(1, 1, payload),
|
||||||
)
|
)
|
||||||
|
|
||||||
const onSubmit = (data: any) => {
|
const onSubmit = async (data: any) => {
|
||||||
let firstTermGrades: { [key: string]: any } = {}
|
let firstTermGrades: { [key: string]: any } = {}
|
||||||
let secondTermGrades: { [key: string]: any } = {}
|
let secondTermGrades: { [key: string]: any } = {}
|
||||||
for (const [key, value] of Object.entries(data)) {
|
for (const [key, value] of Object.entries(data)) {
|
||||||
@ -60,8 +66,9 @@ const GradeCard = () => {
|
|||||||
secondTermGrades[key] = Number(value)
|
secondTermGrades[key] = Number(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mutateGradesFirstTerm(firstTermGrades)
|
await mutateGradesFirstTerm(firstTermGrades)
|
||||||
mutateGradesSecondTerm(secondTermGrades)
|
await mutateGradesSecondTerm(secondTermGrades)
|
||||||
|
refetchGroup()
|
||||||
}
|
}
|
||||||
// const data = useWatch(getValues())
|
// const data = useWatch(getValues())
|
||||||
|
|
||||||
@ -146,13 +153,29 @@ const GradeCard = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SumRow = () => {
|
||||||
|
return (
|
||||||
|
<tr className={styles['small-row']}>
|
||||||
|
<td>
|
||||||
|
<span>Suma uzyskanych punktów:</span>
|
||||||
|
</td>
|
||||||
|
<td className="text-center font-bold">
|
||||||
|
{groupDetails?.data?.points_for_first_term}%
|
||||||
|
</td>
|
||||||
|
<td className="text-center font-bold">
|
||||||
|
{groupDetails?.data?.points_for_second_term}%
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles['grade-table']}>
|
<div className={styles['grade-table']}>
|
||||||
<form onSubmit={handleSubmit(onSubmit)}>
|
<form onSubmit={handleSubmit(onSubmit)} className="overflow-x-scroll">
|
||||||
{/* <div className="flex justify-end">
|
{/* <div className="flex justify-end">
|
||||||
<button className="btn btn-success mb-2">ZAPISZ</button>
|
<button className="btn btn-success mb-2">ZAPISZ</button>
|
||||||
</div> */}
|
</div> */}
|
||||||
<table className=" table-normal border-collapse">
|
<table className="md:table-normal table-compact border-collapse">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Kryterium</th>
|
<th>Kryterium</th>
|
||||||
@ -161,15 +184,16 @@ const GradeCard = () => {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<SumRow />
|
||||||
|
<tr className={styles['small-row']}>
|
||||||
<td>
|
<td>
|
||||||
<h3 className="text-xl font-bold">Prezentacja</h3>
|
<h3 className="text-xl font-bold">Prezentacja</h3>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td> </td>
|
<td></td>
|
||||||
<td> </td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Czy prezentacja zawierała wszystkie wymagane treści (cel i
|
Czy prezentacja zawierała wszystkie wymagane treści (cel i
|
||||||
założenia projektowe, podział prac na semestry, przegląd
|
założenia projektowe, podział prac na semestry, przegląd
|
||||||
@ -221,7 +245,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Czy prezentacja (omówienie projektu i jego demonstracja) była
|
Czy prezentacja (omówienie projektu i jego demonstracja) była
|
||||||
przeprowadzona zgodnie ze sztuką? (oceniane podczas obrony
|
przeprowadzona zgodnie ze sztuką? (oceniane podczas obrony
|
||||||
@ -271,7 +295,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Demonstracja systemu * (oceniane podczas obrony semestralnej)
|
Demonstracja systemu * (oceniane podczas obrony semestralnej)
|
||||||
</td>
|
</td>
|
||||||
@ -319,7 +343,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Odpowiedzi na pytania komisji (oceniane podczas obrony
|
Odpowiedzi na pytania komisji (oceniane podczas obrony
|
||||||
semestralnej)
|
semestralnej)
|
||||||
@ -369,7 +393,7 @@ const GradeCard = () => {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/* */}
|
{/* */}
|
||||||
<tr>
|
<tr className={styles['small-row']}>
|
||||||
<td>
|
<td>
|
||||||
{' '}
|
{' '}
|
||||||
<h3 className="text-xl font-bold">Dokumentacja</h3>
|
<h3 className="text-xl font-bold">Dokumentacja</h3>
|
||||||
@ -609,7 +633,7 @@ const GradeCard = () => {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/* */}
|
{/* */}
|
||||||
<tr>
|
<tr className={styles['small-row']}>
|
||||||
<td>
|
<td>
|
||||||
{' '}
|
{' '}
|
||||||
<h3 className="text-xl font-bold">Praca grupy w semestrze</h3>
|
<h3 className="text-xl font-bold">Praca grupy w semestrze</h3>
|
||||||
@ -942,7 +966,7 @@ const GradeCard = () => {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/* */}
|
{/* */}
|
||||||
<tr>
|
<tr className={styles['small-row']}>
|
||||||
<td>
|
<td>
|
||||||
{' '}
|
{' '}
|
||||||
<h3 className="text-xl font-bold">Produkty projektu</h3>
|
<h3 className="text-xl font-bold">Produkty projektu</h3>
|
||||||
@ -1000,7 +1024,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Dostęp do produktu projektu dla komisji do testów podczas
|
Dostęp do produktu projektu dla komisji do testów podczas
|
||||||
prezentacji * (obowiązkowe w II sem) (oceniane podczas obrony
|
prezentacji * (obowiązkowe w II sem) (oceniane podczas obrony
|
||||||
@ -1050,7 +1074,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Brak krytycznych błędów w tym: bezpieczeństwa oraz
|
Brak krytycznych błędów w tym: bezpieczeństwa oraz
|
||||||
uniemożliwiających korzystanie z systemu * (oceniane podczas
|
uniemożliwiających korzystanie z systemu * (oceniane podczas
|
||||||
@ -1100,7 +1124,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr className={styles['row-required']}>
|
||||||
<td>
|
<td>
|
||||||
Dostęp do produktu projektu dla komisji do testów tydzień przed
|
Dostęp do produktu projektu dla komisji do testów tydzień przed
|
||||||
prezentacją (oceniane podczas obrony semestralnej)
|
prezentacją (oceniane podczas obrony semestralnej)
|
||||||
@ -1531,6 +1555,7 @@ const GradeCard = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<SumRow />
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{/* <div className="flex justify-end">
|
{/* <div className="flex justify-end">
|
||||||
|
@ -90,7 +90,7 @@ const Groups = () => {
|
|||||||
<tr className="bg-gray-50">
|
<tr className="bg-gray-50">
|
||||||
<th>Nazwa</th>
|
<th>Nazwa</th>
|
||||||
<th>Opiekun</th>
|
<th>Opiekun</th>
|
||||||
<th>Semestr 1</th>
|
<th>Punkty semestr 1</th>
|
||||||
<th>Semestr 2</th>
|
<th>Semestr 2</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
@ -120,8 +120,8 @@ const Groups = () => {
|
|||||||
<td>
|
<td>
|
||||||
{`${project_supervisor.first_name} ${project_supervisor.last_name}`}
|
{`${project_supervisor.first_name} ${project_supervisor.last_name}`}
|
||||||
</td>
|
</td>
|
||||||
<td>{points_for_first_term}</td>
|
<td>{points_for_first_term}%</td>
|
||||||
<td>{points_for_second_term}</td>
|
<td>{points_for_second_term}%</td>
|
||||||
<td>
|
<td>
|
||||||
<div className="flex align-center gap-2">
|
<div className="flex align-center gap-2">
|
||||||
<Link
|
<Link
|
||||||
|
Loading…
Reference in New Issue
Block a user