Skip to content

Commit 5f1e301

Browse files
committed
enum instead of boolean cleanup
1 parent 7fecf04 commit 5f1e301

File tree

2 files changed

+17
-23
lines changed

2 files changed

+17
-23
lines changed

src/components/planner/sidebar/sessionController/CsvExport.tsx

+17-19
Original file line numberDiff line numberDiff line change
@@ -13,43 +13,41 @@ const CsvExport = () => {
1313
const { pickedCourses } = useContext(CourseContext);
1414
const { multipleOptions } = useContext(MultipleOptionsContext);
1515

16-
const GET_NAMES = true;
17-
const GET_IDS = false;
16+
enum GetOptionsBy {NAME, ID}
1817

19-
const getOptions = (getByName: boolean): string[] => {
20-
return pickedCourses.map(course => {
21-
22-
const line = getByName
23-
? [course.course_unit_year, csvEncode(course.name), course.acronym]
24-
: [course.id];
18+
const getOptions = (getByName: GetOptionsBy): string[] =>
19+
pickedCourses.map(course => {
20+
const baseInfo = getByName === GetOptionsBy.NAME ?
21+
[course.course_unit_year, csvEncode(course.name), course.acronym] :
22+
[course.id];
2523

26-
multipleOptions.forEach(option => {
24+
const classValues = multipleOptions.map(option => {
2725
const courseOption = option.course_options.find(co => co.course_id === course.id);
28-
const pickedClass = courseOption
29-
? course.classes.find(c => c.id === courseOption.picked_class_id)
30-
: undefined;
26+
const pickedClass = courseOption ?
27+
course.classes.find(c => c.id === courseOption.picked_class_id) :
28+
undefined;
3129

32-
const value = getByName ? pickedClass?.name : pickedClass?.id?.toString();
33-
line.push(csvEncode(value || ''));
30+
return csvEncode(getByName === GetOptionsBy.NAME ? pickedClass?.name : pickedClass?.id?.toString() || '');
3431
});
3532

36-
return line.join(',');
37-
});
38-
};
33+
return [...baseInfo, ...classValues].join(',');
34+
}
35+
);
36+
3937

4038
const exportCSV = () => {
4139
const header = ['Ano', 'Nome', 'Sigla']
4240
multipleOptions.forEach((option) => header.push(option.name))
4341
header.push(pickedCourses.length.toString())
4442

45-
const lines = getOptions(GET_NAMES);
43+
const lines = getOptions(GetOptionsBy.NAME);
4644

4745
lines.push("////----////----////----////----////----////----////")
4846

4947
const header_ids = ['UC_ID']
5048
multipleOptions.forEach((option) => header_ids.push(option.name + "_ID"))
5149

52-
const lines_id = getOptions(GET_IDS);
50+
const lines_id = getOptions(GetOptionsBy.ID);
5351

5452
const csv = [header.join(','), lines.flat().join('\n'), header_ids.join(','), lines_id.flat().join('\n')].join('\n')
5553
const blob = new Blob([csv], { type: 'text/csv' })

src/components/planner/sidebar/sessionController/Export.tsx

-4
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,11 @@ const Export = () => {
4646
const getSelectedCourses = async (content: any): Promise<CourseInfo[]> => {
4747
if (!Array.isArray(content) || content.length === 0) return [];
4848

49-
50-
// Fetch all courses in parallel
5149
const selected_courses = await Promise.all(content.map(row => api.getCourseUnit(row[0])));
5250

53-
// Fetch all majors in parallel
5451
const majorsPromises = selected_courses.map(course => api.getCoursesByMajorId(course.course));
5552
const majorsResults = await Promise.all(majorsPromises);
5653

57-
// Map the ECTS values to the corresponding courses
5854
selected_courses.forEach((course, index) => {
5955
const full_courses = majorsResults[index];
6056
const matching_course = full_courses.find(indiv_course => indiv_course.course_unit_id === course.id);

0 commit comments

Comments
 (0)