Skip to content

Commit 5c1551f

Browse files
committed
feat: Data for calculating the grade
1 parent 641dbb1 commit 5c1551f

File tree

3 files changed

+38
-28
lines changed

3 files changed

+38
-28
lines changed

src/components/sidebar/index.tsx

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const Sidebar = () => {
7979

8080
const {
8181
schoolReport,
82-
setSchoolReport,
82+
updateTotalClasses,
8383
addSubjects,
8484
removeSubjects
8585
} = useSchoolReport()
@@ -117,45 +117,39 @@ export const Sidebar = () => {
117117
label='Nota de aprovação:'
118118
withForm={false}
119119
type='number'
120-
className={`w-[2.6rem] inputNumberValues cursor-not-allowed`}
120+
className={`w-[2.6rem] inputNumberValues`}
121121
onChange={event => setMinimumPassingGrade(Number(event.target.value))}
122122
value={minimumPassingGrade}
123123
step='1'
124124
min='1'
125125
max='10'
126126
container
127-
readOnly
128-
disabled
129127
/>
130128
<Input
131129
name='insufficientGrade'
132130
label='Nota de recuperação:'
133131
withForm={false}
134132
type='number'
135-
className={`w-[2.6rem] inputNumberValues cursor-not-allowed`}
133+
className={`w-[2.6rem] inputNumberValues`}
136134
onChange={event => setMinimumRecoveryGrade(Number(event.target.value))}
137135
value={minimumRecoveryGrade}
138136
step='1'
139137
min='1'
140138
max='10'
141139
container
142-
readOnly
143-
disabled
144140
/>
145141
<Input
146142
name='frequencyPercentage'
147143
label='Porcentagem minima de frequência para aprovação:'
148144
withForm={false}
149145
type='number'
150-
className={`w-[2.6rem] inputNumberValues cursor-not-allowed`}
146+
className={`w-[2.9rem] inputNumberValues`}
151147
onChange={event => setMinimumAttendancePercentageToPass(Number(event.target.value))}
152148
value={minimumAttendancePercentageToPass}
153149
step='1'
154150
min='1'
155151
max='100'
156152
container
157-
readOnly
158-
disabled
159153
/>
160154

161155
<Details summary='Habilitar / Desabilitar'>
@@ -320,18 +314,7 @@ export const Sidebar = () => {
320314
withForm={false}
321315
type='number'
322316
className={`w-12 inputNumberValues`}
323-
onChange={event => {
324-
setSchoolReport({
325-
...schoolReport,
326-
studentAcademicRecord: {
327-
...schoolReport.studentAcademicRecord,
328-
[subjects[activeSubjectIndex]]: {
329-
...schoolReport.studentAcademicRecord[subjects[activeSubjectIndex]],
330-
totalClasses: Number(event.target.value)
331-
}
332-
}
333-
})
334-
}}
317+
onChange={event => updateTotalClasses(Number(event.target.value), subjects[activeSubjectIndex])}
335318
value={schoolReport.studentAcademicRecord[subjects[activeSubjectIndex]].totalClasses}
336319
step='1'
337320
min='1'

src/contexts/SchoolReportConfigContext.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export interface SchoolReportConfigContextData {
2424
setSchoolReportColors (value: SchoolReportColors): void
2525
maintainReportCardData: MaintainReportCardData
2626
setMaintainReportCardData (value: MaintainReportCardData): void
27+
updateTotalClassesRecalculatedComponents: number
28+
setUpdateTotalClassesRecalculatedComponents (value: number): void
2729
minimumAttendancePercentageToPass: number
2830
minimumPassingGrade: number
2931
minimumRecoveryGrade: number
@@ -46,6 +48,8 @@ interface SchoolReportConfigProviderProps { children: ReactNode }
4648
export const SchoolReportConfigContext = createContext({} as SchoolReportConfigContextData)
4749

4850
export function SchoolReportConfigProvider({ children }: SchoolReportConfigProviderProps) {
51+
const [updateTotalClassesRecalculatedComponents, setUpdateTotalClassesRecalculatedComponents] = useState(0)
52+
4953
const [minimumAttendancePercentageToPass, setMinimumAttendancePercentageToPass] = useState(25)
5054
const [minimumPassingGrade, setMinimumPassingGrade] = useState(6)
5155
const [minimumRecoveryGrade, setMinimumRecoveryGrade] = useState(4)
@@ -131,6 +135,8 @@ export function SchoolReportConfigProvider({ children }: SchoolReportConfigProvi
131135
setSchoolReportColors,
132136
maintainReportCardData,
133137
setMaintainReportCardData,
138+
updateTotalClassesRecalculatedComponents,
139+
setUpdateTotalClassesRecalculatedComponents,
134140
minimumAttendancePercentageToPass,
135141
minimumPassingGrade,
136142
minimumRecoveryGrade,

src/contexts/SchoolReportContext.tsx

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export interface SchoolReportContextData {
3535
bimester: keyof Bimester,
3636
academicRecord: 'grades' | 'absences'
3737
) => void
38+
updateTotalClasses: (value: number, subject: Matter) => void
3839
newAcademicRecord: AcademicRecord
3940
addSubjects: (subject: string, custom?: boolean) => void
4041
removeSubjects: (subject: string) => void
@@ -51,6 +52,8 @@ export function SchoolReportProvider({ children }: SchoolReportProviderProps) {
5152
setInactiveSubjects,
5253
activeQuarter,
5354
maintainReportCardData,
55+
updateTotalClassesRecalculatedComponents,
56+
setUpdateTotalClassesRecalculatedComponents,
5457
minimumAttendancePercentageToPass,
5558
minimumPassingGrade,
5659
minimumRecoveryGrade
@@ -101,11 +104,13 @@ export function SchoolReportProvider({ children }: SchoolReportProviderProps) {
101104
}
102105

103106
setSubjects([...subjects, subject])
104-
setSchoolReport({
105-
...schoolReport,
106-
studentAcademicRecord: {
107-
...schoolReport.studentAcademicRecord,
108-
[subject]: newAcademicRecord
107+
setSchoolReport(prevState => {
108+
return {
109+
...prevState,
110+
studentAcademicRecord: {
111+
...prevState.studentAcademicRecord,
112+
[subject]: newAcademicRecord
113+
}
109114
}
110115
})
111116
setInactiveSubjects(inactiveSubjects.filter(item => item !== subject))
@@ -197,6 +202,21 @@ export function SchoolReportProvider({ children }: SchoolReportProviderProps) {
197202
}
198203
})
199204
}
205+
const updateTotalClasses = (value: number, subject: Matter) => {
206+
setSchoolReport(prevState => {
207+
return {
208+
...prevState,
209+
studentAcademicRecord: {
210+
...prevState.studentAcademicRecord,
211+
[subject]: {
212+
...prevState.studentAcademicRecord[subject],
213+
totalClasses: value
214+
}
215+
}
216+
}
217+
})
218+
setUpdateTotalClassesRecalculatedComponents(updateTotalClassesRecalculatedComponents + 1)
219+
}
200220

201221
useEffect(() => {
202222
const recalculatingComponentWithOwnValues = () => {
@@ -241,7 +261,7 @@ export function SchoolReportProvider({ children }: SchoolReportProviderProps) {
241261

242262
recalculatingComponentWithOwnValues()
243263
// eslint-disable-next-line react-hooks/exhaustive-deps
244-
}, [activeQuarter, subjects])
264+
}, [activeQuarter, subjects, minimumPassingGrade, minimumRecoveryGrade, minimumAttendancePercentageToPass, updateTotalClassesRecalculatedComponents])
245265

246266
useEffect(() => {
247267
const { school, teacher, name, number, yearAndClass } = maintainReportCardData
@@ -263,6 +283,7 @@ export function SchoolReportProvider({ children }: SchoolReportProviderProps) {
263283
setSchoolReport,
264284
schoolReportStartup,
265285
updateStudentAcademicRecord,
286+
updateTotalClasses,
266287
newAcademicRecord,
267288
addSubjects,
268289
removeSubjects

0 commit comments

Comments
 (0)