revert Starta på TUI
This commit is contained in:
Trygve 2023-11-02 21:33:29 +00:00
parent 68146307c7
commit 3ccc88e0e0
1 changed files with 42 additions and 116 deletions

View File

@ -14,129 +14,55 @@ from rich.columns import Columns
from rich.table import Table
from rich.panel import Panel
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:
name = self.query_one("#inspname")
name.update(renderable='test')
ecard_log = app.query_one("#ecardlog")
ecard_log.write('aaaaaaaaaaaaaaaaa')
class RunnerInsp(Static):
def compose(self) -> ComposeResult:
yield Static("NAVN", id="inspname")
yield Label("RESULTAT", id="inspresult")
yield Label("POSTER", id="inspcontr")
class EcardLog(Static):
def compose(self) -> ComposeResult:
yield RichLog(highlight=True, markup=True, id="ecardlog")
class MTRDash(Static):
def compose(self) -> ComposeResult:
yield Label("MTR")
def run_otime():
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"))
class TimeApp(App):
CSS_PATH = "event_mgr.tcss"
BINDINGS = [("d", "toggle_dark", "Toggle dark mode"), ("r", "rerun", "Rerun")]
data = (open("/home/trygve/Prosjekter/otime-testing/sc3/mtr.json")).readlines()
for l in data:
d = json.loads(l)
#print(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'])))
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)
def compose(self) -> ComposeResult:
"""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 read_mtr(mtr):
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)
print(json.dumps(card_r.asdict()))
with open("sc3/mtr.json", "a") as myfile:
myfile.write('\n' + json.dumps(card_r.asdict()))
run_otime()
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))
elif size == b'\x37':
meat = mtr.read(55)
status = mtrreader.MtrStatusMessage(meat)
inspect(status)
print(status.year(),status.month(),status.day(),status.hours(),status.minutes())
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
if __name__ == "__main__":
app = TimeApp()
app.run()
main()