revert Starta på TUI
This commit is contained in:
Trygve 2023-11-02 21:33:29 +00:00
parent 68146307c7
commit 3ccc88e0e0

View File

@ -14,129 +14,55 @@ from rich.columns import Columns
from rich.table import Table from rich.table import Table
from rich.panel import Panel from rich.panel import Panel
from rich.console import Group from rich.console import Group
from rich.syntax import Syntax
from rich.table import Table
from time import monotonic
from textual.app import App, ComposeResult
from textual.containers import ScrollableContainer, Horizontal, Vertical
from textual.reactive import reactive
from textual.widgets import Button, Footer, Header, Static, RichLog, DataTable, Label
class RunnerTable(Static):
def compose(self) -> ComposeResult:
yield DataTable(id="runnertable")
def RowSelected(self, data_table, cursor_row, row_key) -> None: def run_otime():
name = self.query_one("#inspname") event = otime.Event.from_toml(open("/home/trygve/Prosjekter/otime-testing/sc3/sc3.toml", "rb"))
name.update(renderable='test') event.import_ttime_db(open("/home/trygve/Prosjekter/otime-testing/sc3/db.csv"))
ecard_log = app.query_one("#ecardlog")
ecard_log.write('aaaaaaaaaaaaaaaaa')
class RunnerInsp(Static): data = (open("/home/trygve/Prosjekter/otime-testing/sc3/mtr.json")).readlines()
def compose(self) -> ComposeResult: for l in data:
yield Static("NAVN", id="inspname") d = json.loads(l)
yield Label("RESULTAT", id="inspresult") #print(l)
yield Label("POSTER", id="inspcontr") event.card_dumps.append(otime.CardDump(d['card'], d['controls'], d['splits'],
class EcardLog(Static): datetime.datetime.fromisoformat(d['read_time']),
def compose(self) -> ComposeResult: datetime.datetime.fromisoformat(d['s_time']),
yield RichLog(highlight=True, markup=True, id="ecardlog") datetime.datetime.fromisoformat(d['f_time'])))
print('Ecards:'+str(len(event.card_dumps)))
print('Løpere:'+str(len(event.runners)))
event.match_all()
#cli.print_runners(event.runners)
for n in event.o_classes:
cli.print_class_result(event.runners, n)
class MTRDash(Static): def read_mtr(mtr):
def compose(self) -> ComposeResult: global event
yield Label("MTR") if mtr.in_waiting > 0:
mtr.read_until(expected=b'\xFF\xFF\xFF\xFF')
size = mtr.read(size=1)
if size == b'\xe6':
meat = mtr.read(229)
full = b'\xFF\xFF\xFF\xFF' + size + meat
card_r = otime.CardDump.from_mtr_bytes(full)
print(json.dumps(card_r.asdict()))
with open("sc3/mtr.json", "a") as myfile:
myfile.write('\n' + json.dumps(card_r.asdict()))
run_otime()
class TimeApp(App): elif size == b'\x37':
CSS_PATH = "event_mgr.tcss" meat = mtr.read(55)
BINDINGS = [("d", "toggle_dark", "Toggle dark mode"), ("r", "rerun", "Rerun")] status = mtrreader.MtrStatusMessage(meat)
inspect(status)
def compose(self) -> ComposeResult: print(status.year(),status.month(),status.day(),status.hours(),status.minutes())
"""Create child widgets for the app."""
yield Header()
yield Footer()
yield RunnerTable(classes="box")
yield RunnerInsp(classes="box")
yield EcardLog(classes="box")
yield MTRDash(classes="box")
def on_ready(self) -> None:
mtr = serial.Serial(port="/dev/pts/2", baudrate=9600, timeout=40)
ecard_log = self.query_one("#ecardlog")
ecard_log.write("[bold magenta]Write text or any Rich renderable!")
#self.run_worker(self.watch_serial())
self.render_table()
self.read_mtr()
def action_toggle_dark(self) -> None:
"""An action to toggle dark mode."""
self.dark = not self.dark
def action_rerun(self) -> None:
"""Rerun otime"""
self.run_otime()
def read_mtr(app):
mtr = serial.Serial(port="/dev/pts/2", baudrate=9600, timeout=40)
# mtr.write(b'/SA')
global event
if mtr.in_waiting > 0:
mtr.read_until(expected=b'\xFF\xFF\xFF\xFF')
size = mtr.read(size=1)
if size == b'\xe6':
meat = mtr.read(229)
full = b'\xFF\xFF\xFF\xFF' + size + meat
card_r = otime.CardDump.from_mtr_bytes(full)
ecard_log.write(json.dumps(card_r.asdict()))
with open("sc3/mtr.json", "a") as myfile:
myfile.write('\n' + json.dumps(card_r.asdict()))
run_otime()
elif size == b'\x37':
meat = mtr.read(55)
status = mtrreader.MtrStatusMessage(meat)
inspect(status)
ecard_log.write(status.year(),status.month(),status.day(),status.hours(),status.minutes())
def run_otime(app):
ecard_log = app.query_one("#ecardlog")
event = otime.Event.from_toml(open("/home/trygve/Prosjekter/otime-testing/sc3/sc3.toml", "rb"))
event.import_ttime_db(open("/home/trygve/Prosjekter/otime-testing/sc3/db.csv"))
data = (open("/home/trygve/Prosjekter/otime-testing/sc3/mtr.json")).readlines()
for l in data:
d = json.loads(l)
ecard_log.write(l)
event.card_dumps.append(otime.CardDump(d['card'], d['controls'], d['splits'],
datetime.datetime.fromisoformat(d['read_time']),
datetime.datetime.fromisoformat(d['s_time']),
datetime.datetime.fromisoformat(d['f_time'])))
#ecard_log.write('Ecards:'+str(len(event.card_dumps)))
#ecard_log.write('Løpere:'+str(len(event.runners)))
event.match_all()
#cli.print_runners(event.runners)
#for n in event.o_classes:
#cli.print_class_result(event.runners, n)
return event
def render_table(app):
table = app.query_one("#runnertable")
table.cursor_type = "row"
table.add_column("Name")
table.add_column("Status")
table.add_column("club")
table.add_column("card")
table.add_column("class")
table.add_column("start_time")
table.add_column("fork")
for i in app.run_otime().runners:
try:
o_class = i.o_class.name
except:
o_class = ''
table.add_row(i.fullname(), i.status(), i.club ,str(i.card), o_class, i.start_time, str(i.fork))
def main():
mtr = serial.Serial(port="/dev/pts/2", baudrate=9600, timeout=40)
# mtr.write(b'/SA')
while True:
read_mtr(mtr)
sleep(0.1)
db_file_u = None db_file_u = None
if __name__ == "__main__": if __name__ == "__main__":
app = TimeApp() main()
app.run()