diff --git a/timesheet/reportUpdating.py b/timesheet/reportUpdating.py new file mode 100644 index 0000000..a6100fe --- /dev/null +++ b/timesheet/reportUpdating.py @@ -0,0 +1,63 @@ +import subprocess +import csv +import pandas as pd + +def compile_latex(latex_file): + try: + # Run the pdflatex command to compile the LaTeX file + subprocess.run(['pdflatex', latex_file], check=True) + print(f'Successfully compiled {latex_file}') + except subprocess.CalledProcessError as e: + print(f'Error compiling {latex_file}: {e}') + +def timesheet2Tex(): + with open("timesheet.tex", 'r') as f: + lines = f.readlines() + timesheetStart = findIn(lines, "% OPEN Timesheet") + timesheetStop = findIn(lines, "% CLOSE Timesheet") + + timetable = csv2Table("timesheet.csv") + + df = pd.read_csv("timesheet.csv") + df = df.groupby("Type").sum() + + timetable += "\\noindent " + for timetype in df.iloc: + timetable += f"Hours for {timetype.name}: {timetype['Duration (Hours)']}\\\\\n" + + timetable += "\\textbf{Total Hours: " + str(sum(df['Duration (Hours)'].values)) + "}\\\\\n" + + with open("timesheet.tex", 'w') as f: + f.write(''.join(lines[:timesheetStart+1]) + timetable + ''.join(lines[timesheetStop:])) + +def csv2Table(inFile): + with open(inFile, 'r') as f: + reader = csv.reader(f) + rows = list(reader) + + out = "\\begin{table}[h!]\n\\centering\n" + out += "\\begin{tabular}[t]{|" + " c | c | c | c | p{6cm} |}\n" + out += "\\hline\n" + + for row in rows: + # Escape special LaTeX characters + row = [cell.replace('&', '\\&') for cell in row] + out += " & ".join(row) + " \\\\\n" + out += "\\hline\n" + + out += "\\end{tabular}\n\\end{table}\n" + return out + +def findIn(arr, target): + for i, s in enumerate(arr): + if target in s: + return i + return -1 + +if __name__ == "__main__": + timesheet2Tex() + compile_latex('timesheet.tex') + + # latex makes all kinds of files :( + subprocess.run(['rm -f *.aux *.log *.fdb_latexmk *.fls *.gz'], check=True, shell=True) + diff --git a/timesheet/timesheet.csv b/timesheet/timesheet.csv new file mode 100644 index 0000000..26322dc --- /dev/null +++ b/timesheet/timesheet.csv @@ -0,0 +1,3 @@ +Week,Date,Type,Duration (Hours),Description +1,08/30,Advising Meetings,1,"Stat Review Content acknowledgement, Latex overview for reports" +2,09/02,Reporting,3,"First applications of Latex for final report, created Timesheet System." \ No newline at end of file diff --git a/timesheet/timesheet.pdf b/timesheet/timesheet.pdf new file mode 100644 index 0000000..842f8ab Binary files /dev/null and b/timesheet/timesheet.pdf differ diff --git a/timesheet/timesheet.tex b/timesheet/timesheet.tex new file mode 100644 index 0000000..e2eac74 --- /dev/null +++ b/timesheet/timesheet.tex @@ -0,0 +1,42 @@ +\documentclass{article} +\usepackage{blindtext} +\usepackage[a4paper, total={6in, 8in}]{geometry} +\nofiles + +\begin{document} + +\begin{titlepage} +\begin{center} + +\Large{\textbf{Implementations of Probability Theory}}\\ + +\rule{14cm}{0.05cm}\\ \vspace{.5cm} + +\Large{Independent Study Timesheet}\\ + +\large{Compiled on: \today}\\ + +\end{center} +\end{titlepage} + +\newpage + +% OPEN Timesheet +\begin{table}[h!] +\centering +\begin{tabular}[t]{| c | c | c | c | p{6cm} |} +\hline +Week & Date & Type & Duration (Hours) & Description \\ +\hline +1 & 08/30 & Advising Meetings & 1 & Stat Review Content acknowledgement, Latex overview for reports \\ +\hline +2 & 09/02 & Reporting & 3 & First applications of Latex for final report, created Timesheet System. \\ +\hline +\end{tabular} +\end{table} +\noindent Hours for Advising Meetings: 1\\ +Hours for Reporting: 3\\ +\textbf{Total Hours: 4}\\ +% CLOSE Timesheet + +\end{document} \ No newline at end of file