diff --git a/otime/cli.py b/otime/cli.py index bef3ef2..6396d9d 100644 --- a/otime/cli.py +++ b/otime/cli.py @@ -9,6 +9,7 @@ import iof_xml import pdf from pdf import format_m_s from rich import print +import search_tui # Main entrypoint for now. Cli with two options; init will make the files needed and run will start the program from the specified directory def main(): @@ -27,6 +28,10 @@ def main(): parser_init.add_argument('--port', required=False, dest='port', action='store', help='specify a serial port') parser_init.add_argument('--xml', required=False, dest='xml_path', action='store', default=None, help='Where the xml result file should be saved') + parser_init = subparsers.add_parser('viewer', help='View otime data') + parser_init.add_argument('--dir', required=False, dest='dir', action='store', default='./', help='specify a directory') + parser_init.add_argument('--xml', required=False, dest='xml_path', action='store', default=None, help='Where the xml result file should be saved') + args = parser.parse_args() if not args.xml_path: @@ -37,6 +42,8 @@ def main(): init_dir(args.dir, args.entries_file, args.courses_file) case 'run': run(args.port, args.dir, args.xml_path) + case 'viewer': + search_tui.main(args.dir) def init_dir(project_dir, entries_xml_file, courses_xml_file): # Lager mappe med en config fil, en csv fil med løpere og en fil med mtr data diff --git a/otime/search_tui.py b/otime/search_tui.py new file mode 100644 index 0000000..f99226f --- /dev/null +++ b/otime/search_tui.py @@ -0,0 +1,30 @@ +from textual.app import App, ComposeResult +from textual.widgets import DataTable +import otime +import file_io +from pdf import format_m_s + +global ROWS +class TableApp(App): + def compose(self) -> ComposeResult: + yield DataTable() + + def on_mount(self) -> None: + global ROWS + table = self.query_one(DataTable) + table.add_columns(*ROWS[0]) + table.add_rows(ROWS[1:]) + +def main(path): + event = file_io.event_from_yaml_and_csv(path + '/config.yaml', path + '/mtr.yaml', path + '/runners.csv') + result = event.get_result() + global ROWS + ROWS = [] + for o_class in result: + ROWS += [(str(i.id), str(i.place), i.fullname(), i.o_class, i.club, str(i.card_id), format_m_s(i.total_time), str(i.controls)) for i in o_class.runner_results] + print(ROWS) + app = TableApp() + app.run() + +if __name__ == "__main__": + main() \ No newline at end of file