diff --git a/util/toWord.py b/util/toWord.py index bc29a6f..cb23f1f 100755 --- a/util/toWord.py +++ b/util/toWord.py @@ -1,13 +1,40 @@ #!/usr/bin/env python3.11 from docx.shared import Inches +import xlsxwriter import docx import json flex = ("XAT--12A-S", "XAT--12B-S") + +def putMasterTimetable(table: dict, output_dir: str='./output/final') -> None: + # worksheet.write(row, col, val) -def putMasterTimetable(timetable: dict): - pass + workbook = xlsxwriter.Workbook('master_timetable.xlsx') + worksheet = workbook.add_worksheet() + + sem1Header = workbook.add_format({'bold': True, 'align': 'center', 'bg_color': '#91c5fa', 'border': 1}) + sem2Header = workbook.add_format({'bold': True, 'align': 'center', 'bg_color': '#a2fa91', 'border': 1}) + sem1Data = workbook.add_format({'bg_color': '#cee1f5', 'border': 1}) + sem2Data = workbook.add_format({'bg_color': '#d8f7d2', 'border': 1}) + worksheet.merge_range(0, 0, 0, len(table) * 2 - 1, 'Semester 1', sem1Header) + worksheet.merge_range(0, len(table) * 2, 0, (len(table) * 4) - 1, 'Semester 2', sem2Header) + + tracker = 0 + for i in range(0, len(table) * 4, 4): + tracker += 1 + block, index = tracker, f'block{tracker}' + header = sem1Header if tracker <= len(table) / 2 else sem2Header + block = block if block <= len(table) / 2 else block - (len(table) // 2) + worksheet.merge_range(1, i, 1, i + 3, f'Block {block}', header) + + row = 2 + for course in table[index]: + style = sem1Data if tracker <= len(table) / 2 else sem2Data + worksheet.merge_range(row, i, row + 1, i + 3, f'{table[index][course]["Description"]}\n{course[:-2]}', style) + row += 2 + + workbook.close() def putScheduleToWord(courses: dict, student: dict, output_dir: str='./output/final/student_schedules') -> None: