script/dnet: render slot msgs

This commit is contained in:
lunar-mining
2023-09-10 15:19:53 +02:00
parent 119f593dbf
commit 3be0e7a757
3 changed files with 60 additions and 16 deletions

View File

@@ -92,13 +92,11 @@ class Dnetview:
# Update event info: TODO
if "params" in values:
continue
# TODO
#self.model.handle_event(info)
self.model.handle_event(info)
self.queue.task_done()
except self.queue.is_empty():
logging.debug("update_model(): QueueEmpty")
except OSError as e:
logging.debug("update_model(): error {}", e)
def main(self):
logging.basicConfig(filename='dnet.log', encoding='utf-8', level=logging.DEBUG)

View File

@@ -69,8 +69,26 @@ class Model:
def handle_event(self, event):
name = list(event.keys())[0]
params = list(event.values())[0]
values = list(event.values())[0]
params = values.get("params")
event = params[0].get("event")
info = params[0].get("info")
if "chan" in info:
time = info.get("time")
cmd = info.get("cmd")
chan = info.get("chan")
addr = chan.get("addr")
self.info.update_msg(addr, (time, event, cmd))
else:
# TODO
#slot = info.get("slot")
logging.debug(info)
logging.debug(event)
#self.info.update_msgs(addr, (time, event, cmd))
def __repr__(self):
return f"{self.nodes}"
@@ -94,8 +112,11 @@ class Info:
def update_seed(self, key, value):
self.seed[key] = value
def update_msg(self, msg):
self.msgs = msg
def update_msg(self, key, value):
if key in self.msgs:
self.msgs[key] += [value]
else:
self.msgs[key] = [value]
def __repr__(self):
return (

View File

@@ -18,6 +18,7 @@
import urwid
import logging
import asyncio
import datetime
from scroll import ScrollBar, Scrollable
from model import Model
@@ -117,8 +118,8 @@ class View():
("line","dark cyan","black","standout"),
]
def __init__(self, data):
self.data = data
def __init__(self, model):
self.model = model
info_text = urwid.Text("")
self.pile = urwid.Pile([info_text])
scroll = ScrollBar(Scrollable(self.pile))
@@ -139,7 +140,7 @@ class View():
name = item.get_name()
names.append(name)
for name, values in self.data.nodes.items():
for name, values in self.model.nodes.items():
if name in names:
continue
@@ -181,10 +182,34 @@ class View():
match focus_w[0].get_widget():
case "NodeView":
self.pile.contents.append((
urwid.Text(f"Node selected"), self.pile.options()))
urwid.Text(f"Node selected"),
self.pile.options()))
case "ConnectView":
self.pile.contents.append((
urwid.Text("Connection selected"), self.pile.options()))
urwid.Text("Connection selected"),
self.pile.options()))
case "SlotView":
self.pile.contents.append((
urwid.Text("Slot selected"), self.pile.options()))
name = focus_w[0].get_name()
# Remove the prepend
name = name[7:]
if name in self.model.info.msgs.keys():
values = (
self.model.info.msgs.get(name)
)
for value in values:
nanotime = (
int(value[0])
)
time = (
datetime.datetime.fromtimestamp(
nanotime/1000000000).strftime(
'%Y-%m-%d %H:%M:%S.%f')
)
event = value[1]
msg = value[2]
#logging.debug(values)
self.pile.contents.append((
urwid.Text(
f"{time}: {event}: {msg}"),
self.pile.options()))