Substitution-Requests/sectionViewWindow.py
2023-10-25 14:14:08 -04:00

66 lines
2.3 KiB
Python

import PySimpleGUI as sg
import csv
import pandas as pd
import helperFunctions as HF
def secViewWin(defaultFont):
#Printing options for the Pandas dataframe
pd.set_option('display.min_rows', 20)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', 30)
#Pull all section titles for the poopulation of the drop-down box
sections=HF.getAllSectionTitles()
#Define the window's layout
layout=[[sg.Combo(sections,size=(7,1),key="-SECTION-",readonly=True, enable_events=True)],
[sg.Multiline("",size=(160,40),key="-OUTPUT-")],
[sg.Button("Close")]]
# Create the Window
window = sg.Window('Section Viewer', layout, font=defaultFont,resizable=True)
#Event Loop to process "events" and get the "values" of the inputs
#Cease running if they close the window
event=-1
while event != sg.WIN_CLOSED and event != "Close":
event, values = window.read()
#If the 'section' box is interacted with and is not blank (i.e. an option was selected from the dropdown box)
if event=="-SECTION-" and values['-SECTION-']!="":
#Clear the box
window["-OUTPUT-"].Update('')
#get the data
sec=values['-SECTION-']
output,output2=HF.getAllDataForSection(sec)#output is the current status, output2 is the beginning of semester status
output=output.values.tolist()
output2=output2.head(1).values.tolist()[0]
#Print the normal, unchanged schedule as it exists at the beginning of the semester
window["-OUTPUT-"].print("Normally Scheduled: "+str(output2[2])+" @ "+str(output2[3]),text_color='black')
normalNames=[]
for ID in output2[4:]:
normalNames.append(f'{HF.IDToName(ID)[:15]:15}')
window["-OUTPUT-"].print('1 '+output2[1]+' '+', '.join(normalNames),text_color='blue')
#Print a linebreak
window["-OUTPUT-"].print("-"*160,text_color='black')
#print the schedule for each week, one week per row
window["-OUTPUT-"].print("Currently Scheduled:",text_color='black')
for line in output:
names=[]
for ID in line[4:]:
names.append(f'{HF.IDToName(ID)[:15]:15}')
color='blue'
if names!=normalNames:
color='red'
window["-OUTPUT-"].print(f'{line[0]:2} '+line[1]+' '+', '.join(names),text_color=color)
window.close()