mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-03-04 23:27:46 +01:00
Fix portnum selection.
I guess that only worked on the search page before.
This commit is contained in:
@@ -162,15 +162,12 @@ async def get_packet(packet_id):
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def get_uplinked_packets(node_id):
|
||||
async def get_uplinked_packets(node_id, portnum=None):
|
||||
async with database.async_session() as session:
|
||||
result = await session.execute(
|
||||
select(Packet)
|
||||
.join(PacketSeen)
|
||||
.where(PacketSeen.node_id == node_id)
|
||||
.order_by(Packet.import_time.desc())
|
||||
.limit(500)
|
||||
)
|
||||
q = select(Packet).join(PacketSeen).where(PacketSeen.node_id == node_id).order_by(Packet.import_time.desc()).limit(500)
|
||||
if portnum:
|
||||
q = q.where(Packet.portnum == portnum)
|
||||
result = await session.execute(q)
|
||||
return result.scalars()
|
||||
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
<a
|
||||
role="button"
|
||||
class="btn {{ 'btn-primary' if packet_event == 'packet' else 'btn-secondary'}}"
|
||||
href="/packet_list/{{node_id}}"
|
||||
href="/packet_list/{{node_id}}?{{query_string}}"
|
||||
>
|
||||
TX/RX
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="btn {{ 'btn-primary' if packet_event == 'uplinked' else 'btn-secondary'}}"
|
||||
href="/uplinked_list/{{node_id}}"
|
||||
href="/uplinked_list/{{node_id}}?{{query_string}}"
|
||||
>
|
||||
Uplinked
|
||||
</a>
|
||||
|
||||
21
meshview/templates/search.html
Normal file
21
meshview/templates/search.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
|
||||
{% include "search_form.html" %}
|
||||
|
||||
<ul>
|
||||
{% for node in nodes %}
|
||||
<li>
|
||||
<a href="/packet_list/{{node.node_id}}?{{query_string}}">
|
||||
{{node.node_id | node_id_to_hex}}
|
||||
{% if node.long_name %}
|
||||
{{node.short_name}} — {{node.long_name}}
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% endblock %}
|
||||
@@ -231,38 +231,32 @@ async def node_match(request):
|
||||
@routes.get("/packet_list/{node_id}")
|
||||
async def packet_list(request):
|
||||
node_id = int(request.match_info["node_id"])
|
||||
|
||||
async with asyncio.TaskGroup() as tg:
|
||||
raw_packets = tg.create_task(store.get_packets(node_id))
|
||||
node = tg.create_task(store.get_node(node_id))
|
||||
trace = tg.create_task(build_trace(node_id))
|
||||
neighbors = tg.create_task(build_neighbors(node_id))
|
||||
has_telemetry = tg.create_task(store.has_packets(node_id, PortNum.TELEMETRY_APP))
|
||||
|
||||
packets = (Packet.from_model(p) for p in await raw_packets)
|
||||
|
||||
template = env.get_template("node.html")
|
||||
return web.Response(
|
||||
text=template.render(
|
||||
raw_node_id=node_id_to_hex(node_id),
|
||||
node_id=node_id,
|
||||
node=await node,
|
||||
packets=packets,
|
||||
packet_event="packet",
|
||||
trace=await trace,
|
||||
neighbors=await neighbors,
|
||||
has_telemetry=await has_telemetry,
|
||||
),
|
||||
content_type="text/html",
|
||||
)
|
||||
if portnum := request.query.get("portnum"):
|
||||
portnum = int(portnum)
|
||||
else:
|
||||
portnum = None
|
||||
return await _packet_list(request, store.get_packets(node_id, portnum), 'packet')
|
||||
|
||||
|
||||
@routes.get("/uplinked_list/{node_id}")
|
||||
async def uplinked_list(request):
|
||||
node_id = int(request.match_info["node_id"])
|
||||
if portnum := request.query.get("portnum"):
|
||||
portnum = int(portnum)
|
||||
else:
|
||||
portnum = None
|
||||
return await _packet_list(request, store.get_uplinked_packets(node_id, portnum), 'uplinked')
|
||||
|
||||
|
||||
async def _packet_list(request, raw_packets, packet_event):
|
||||
node_id = int(request.match_info["node_id"])
|
||||
if portnum := request.query.get("portnum"):
|
||||
portnum = int(portnum)
|
||||
else:
|
||||
portnum = None
|
||||
|
||||
async with asyncio.TaskGroup() as tg:
|
||||
raw_packets = tg.create_task(store.get_uplinked_packets(node_id))
|
||||
raw_packets = tg.create_task(raw_packets)
|
||||
node = tg.create_task(store.get_node(node_id))
|
||||
trace = tg.create_task(build_trace(node_id))
|
||||
neighbors = tg.create_task(build_neighbors(node_id))
|
||||
@@ -276,11 +270,13 @@ async def uplinked_list(request):
|
||||
raw_node_id=node_id_to_hex(node_id),
|
||||
node_id=node_id,
|
||||
node=await node,
|
||||
portnum=portnum,
|
||||
packets=packets,
|
||||
packet_event="uplinked",
|
||||
packet_event=packet_event,
|
||||
trace=await trace,
|
||||
neighbors=await neighbors,
|
||||
has_telemetry=await has_telemetry,
|
||||
query_string=request.query_string,
|
||||
),
|
||||
content_type="text/html",
|
||||
)
|
||||
@@ -346,7 +342,7 @@ async def events(request):
|
||||
uplinked = [
|
||||
u
|
||||
for u in event.uplinked
|
||||
if portnum is None or portnum == p.portnum
|
||||
if portnum is None or portnum == u.portnum
|
||||
]
|
||||
event.clear()
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user