Files
pymc_console-dist/frontend/dist/assets/Packets-CmXx_LJS.js
T
GitHub Actions Bot 824b85edee Sync build v0.9.192
Automated sync from private repository.
Commit: a7ee3749c3d0cdb16ec9916a90d6e0c32f343ab3
2026-01-27 07:29:45 +00:00

2 lines
10 KiB
JavaScript

import{r as e,j as a,ab as s,ac as l,ad as t,C as i,ae as r,af as n,ag as o,ah as c,_ as d,aa as m,ai as u,aj as p,ak as x,al as h,E as b,X as g}from"./vendor-react-LAbPDfrQ.js";import{c as v}from"./recharts-D38YBQhj.js";import{u as j,c as f,b as y,r as N,t as w,R as k,L as C,v as S}from"./index-DSST4Vwq.js";import{g as P,P as R}from"./PacketList-02furn0k.js";import{P as L,b as M,a as F}from"./PageLayout-CPPEYuG6.js";import{C as _}from"./Card-DecEDgdl.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-C8enCXLL.js";import"./DataBox-ChCyaBc1.js";import"./useThemeColors-BZADUK_r.js";function D({options:n,value:o,onChange:c,defaultValue:d,displayValue:m,filter:u,placeholder:p,disabled:x,invalid:h,name:b,"aria-label":g,className:j,children:f}){const[y,N]=e.useState(""),w=m??(e=>null!=e?String(e):""),k=u??((e,a)=>w(e).toLowerCase().includes(a.toLowerCase())),C=e.useMemo(()=>y?n.filter(e=>k(e,y)):n,[n,y,k]);return a.jsx(s,{value:o,onChange:c,defaultValue:d,disabled:x,name:b,onClose:()=>N(""),children:a.jsxs("div",{className:v("relative",j),children:[a.jsxs("div",{className:"relative",children:[a.jsx(l,{"aria-label":g,displayValue:w,onChange:e=>N(e.target.value),placeholder:p,className:v(["w-full rounded-lg py-2 pl-3 pr-10","text-sm text-text-primary placeholder:text-text-muted","bg-bg-subtle border",h?"border-accent-danger":"border-border-subtle","focus:outline-none focus:border-accent-primary/50 focus:ring-1 focus:ring-accent-primary/20","hover:border-border-strong","disabled:opacity-50 disabled:cursor-not-allowed","transition-colors duration-150"])}),a.jsx(t,{className:"absolute inset-y-0 right-0 flex items-center pr-3 group",children:a.jsx(i,{className:"w-4 h-4 text-text-muted transition-transform duration-200 group-data-[open]:rotate-180"})})]}),a.jsx(r,{anchor:"bottom start",transition:!0,className:v(["w-[var(--input-width)] min-w-[180px]","max-h-60 overflow-y-auto overscroll-contain scroll-py-1","rounded-lg p-1 mt-1","glass-card-elevated","focus:outline-none","transition-opacity duration-150 ease-out","data-[closed]:opacity-0","data-[enter]:duration-150 data-[leave]:duration-100","z-50"]),children:0===C.length&&""!==y?a.jsx("div",{className:"px-3 py-2 text-sm text-text-muted",children:"No results found"}):C.map((s,l)=>a.jsx(e.Fragment,{children:f(s)},l))})]})})}function A({value:s,disabled:l,className:t,children:i}){return a.jsx(n,{as:e.Fragment,value:s,disabled:l,children:({selected:e,focus:s})=>a.jsxs("div",{className:v("flex items-center gap-2 px-3 py-2 rounded-md cursor-default","text-sm",s&&"bg-accent-primary text-white",!s&&"text-text-primary",e&&!s&&"text-accent-primary",l&&"opacity-50 cursor-not-allowed",t),children:[a.jsx("span",{className:"w-4 flex-shrink-0",children:e&&a.jsx(o,{className:"w-4 h-4"})}),a.jsx("span",{className:"truncate flex-1",children:i})]})})}function T({className:e,...s}){return a.jsx("span",{...s,className:v("truncate",e)})}function V({value:e,onChange:s,options:l,placeholder:t,disabled:i,className:r,"aria-label":n}){const o=l.find(a=>a.value===e);return a.jsx(D,{options:l,value:o,onChange:e=>{e&&s(e.value)},displayValue:e=>(null==e?void 0:e.label)??"",filter:(e,a)=>e.label.toLowerCase().includes(a.toLowerCase()),placeholder:t,disabled:i,className:r,"aria-label":n,children:e=>a.jsx(A,{value:e,disabled:e.disabled,children:a.jsx(T,{children:e.label})})})}function q({icon:e,label:s,value:l,color:t,percentage:i}){return a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("div",{className:v("p-1.5 rounded-md",t),children:e}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"text-sm font-semibold text-text-primary",children:l.toLocaleString()}),a.jsxs("span",{className:"text-[10px] text-text-muted leading-tight",children:[s,void 0!==i&&a.jsxs("span",{className:"ml-1 opacity-70",children:["(",i,"%)"]})]})]})]})}const H=e.memo(function({packets:s}){const l=e.useMemo(()=>{let e=0,a=0,l=0;const t=new Set;let i=0,r=0;for(const c of s){switch(P(c)){case"forward":e++;break;case"dropped":a++;break;case"duplicate":l++}c.src_hash&&t.add(c.src_hash),c.rssi&&(i+=c.rssi,r++)}const n=s.length,o=r>0?Math.round(i/r):0;return{total:n,rx:n,fwd:e,dropped:a,duplicate:l,uniqueSources:t.size,avgRssi:o,rxPercent:100,fwdPercent:n>0?Math.round(e/n*100):0,droppedPercent:n>0?Math.round(a/n*100):0}},[s]);return 0===s.length?null:a.jsx("div",{className:"glass-card p-3 pr-4",children:a.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:flex sm:items-center sm:justify-between sm:gap-6",children:[a.jsx(q,{icon:a.jsx(c,{className:"w-3.5 h-3.5 text-accent-primary"}),label:"Received",value:l.rx,color:"bg-accent-primary/10",percentage:l.rxPercent}),a.jsx(q,{icon:a.jsx(d,{className:"w-3.5 h-3.5 text-accent-success"}),label:"Forwarded",value:l.fwd,color:"bg-accent-success/10",percentage:l.fwdPercent}),a.jsx(q,{icon:a.jsx(m,{className:"w-3.5 h-3.5 text-accent-danger"}),label:"Dropped",value:l.dropped,color:"bg-accent-danger/10",percentage:l.droppedPercent}),a.jsx(q,{icon:a.jsx(u,{className:"w-3.5 h-3.5 text-text-muted"}),label:"Duplicates",value:l.duplicate,color:"bg-white/5"}),a.jsxs("div",{className:"hidden sm:flex items-center gap-6 ml-auto",children:[a.jsx(q,{icon:a.jsx(p,{className:"w-3.5 h-3.5 text-accent-secondary"}),label:"Sources",value:l.uniqueSources,color:"bg-accent-secondary/10"}),a.jsxs("div",{className:"flex flex-col items-end pr-1",children:[a.jsxs("span",{className:"text-sm font-mono text-text-secondary",children:[l.avgRssi," dBm"]}),a.jsx("span",{className:"text-[10px] text-text-muted",children:"Avg Signal"})]})]})]})})});function z(){const s=j(),l=f(),t=y(),i=N(),r=null==l?void 0:l.local_hash,n=null==l?void 0:l.neighbors,[o,c]=e.useState(!1),[d,m]=e.useState({limit:500,status:"all"}),[u,p]=e.useState(Date.now);e.useEffect(()=>{d.timeRange&&d.timeRange>0&&queueMicrotask(()=>p(Date.now()))},[d.timeRange,s]);const D=e.useMemo(()=>{const e=d.limit??500;return[...s.length<=e?s:s.slice(-e)].sort((e,a)=>(a.timestamp??0)-(e.timestamp??0))},[s,d.limit]),A=0===s.length,T=e.useMemo(()=>{let e=D;if(void 0!==d.type){const a=w[d.type];e=e.filter(e=>{const s=e.type??e.payload_type,l=e.payload_type_name;return s===d.type||l===a})}if(void 0!==d.route){const a=k[d.route];e=e.filter(e=>{const s=e.route??e.route_type,l=e.route_type_name;return s===d.route||l===a})}if(d.status&&"all"!==d.status&&(e=e.filter(e=>P(e)===d.status)),void 0!==d.signalMin&&(e=e.filter(e=>e.rssi>=d.signalMin)),d.timeRange&&d.timeRange>0){const a=u/1e3-3600*d.timeRange;e=e.filter(e=>e.timestamp>=a)}return e},[D,d.type,d.route,d.status,d.signalMin,d.timeRange,u]),q=(e,a)=>m(s=>({...s,[e]:a})),z=void 0!==d.type||void 0!==d.route||d.status&&"all"!==d.status||void 0!==d.signalMin||d.timeRange&&d.timeRange>0;return a.jsxs(L,{children:[a.jsx(M,{title:"Packet History",icon:a.jsx(b,{}),controls:a.jsxs(a.Fragment,{children:[t&&a.jsx(C,{showLabel:!0}),a.jsxs(S,{outline:!0,color:z?"primary":"muted",onClick:()=>c(!o),className:"sm:hidden",children:[a.jsx(x,{"data-slot":"icon"}),z&&a.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-primary"})]}),a.jsxs(S,{outline:!0,color:t?"success":"muted",onClick:()=>i(!t),children:[a.jsx(h,{"data-slot":"icon",className:v(t&&"animate-spin")}),a.jsx("span",{className:"hidden xs:inline",children:t?"Live":"Paused"})]})]})}),a.jsxs(F,{noPadding:!0,className:v("overflow-hidden transition-all duration-200",o?"max-h-96 opacity-100":"max-h-0 opacity-0 sm:max-h-96 sm:opacity-100"),children:[a.jsx(_,{listHeader:!0,icon:a.jsx(x,{className:"icon-sm"}),title:"Filters",actions:z?a.jsxs(S,{plain:!0,color:"muted",onClick:()=>m({limit:d.limit,status:"all"}),className:"!text-xs !py-0.5 !px-1.5",children:[a.jsx(g,{"data-slot":"icon",className:"!w-3 !h-3"}),"Clear"]}):void 0}),a.jsx("div",{className:"p-3 sm:p-4",children:a.jsxs("div",{className:"grid grid-cols-2 sm:flex sm:flex-wrap gap-3",children:[a.jsxs("div",{className:"flex-1 min-w-[140px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Type"}),a.jsx(V,{value:d.type??"",onChange:e=>q("type",""===e?void 0:Number(e)),options:[{value:"",label:"All Types"},...Object.entries(w).map(([e,a])=>({value:Number(e),label:a}))],placeholder:"Search types...","aria-label":"Filter by packet type"})]}),a.jsxs("div",{className:"flex-1 min-w-[140px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Route"}),a.jsx(V,{value:d.route??"",onChange:e=>q("route",""===e?void 0:Number(e)),options:[{value:"",label:"All Routes"},...Object.entries(k).map(([e,a])=>({value:Number(e),label:a}))],placeholder:"Search routes...","aria-label":"Filter by route type"})]}),a.jsxs("div",{className:"flex-1 min-w-[140px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Status"}),a.jsx(V,{value:d.status??"all",onChange:e=>q("status",e),options:[{value:"all",label:"All Status"},{value:"rx",label:"Received"},{value:"forward",label:"Forwarded"},{value:"dropped",label:"Dropped"},{value:"duplicate",label:"Duplicate"}],placeholder:"Search status...","aria-label":"Filter by status"})]}),a.jsxs("div",{className:"flex-1 min-w-[120px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Time"}),a.jsx(V,{value:d.timeRange??0,onChange:e=>q("timeRange",0===e?void 0:e),options:[{value:0,label:"All Time"},{value:1,label:"Last 1h"},{value:6,label:"Last 6h"},{value:24,label:"Last 24h"},{value:168,label:"Last 7d"}],placeholder:"Search time...","aria-label":"Filter by time range"})]}),a.jsxs("div",{className:"flex-1 min-w-[130px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Signal"}),a.jsx(V,{value:d.signalMin??"",onChange:e=>q("signalMin",""===e?void 0:Number(e)),options:[{value:"",label:"Any Signal"},{value:-90,label:"Strong (≥-90)"},{value:-100,label:"Good (≥-100)"},{value:-110,label:"Fair (≥-110)"},{value:-120,label:"Weak (≥-120)"}],placeholder:"Search signal...","aria-label":"Filter by signal strength"})]}),a.jsxs("div",{className:"flex-1 min-w-[100px]",children:[a.jsx("label",{className:"type-micro block mb-1",children:"Limit"}),a.jsx(V,{value:d.limit??500,onChange:e=>q("limit",e),options:[{value:100,label:"100"},{value:200,label:"200"},{value:500,label:"500"},{value:1e3,label:"1000"},{value:2e3,label:"2000"}],placeholder:"Limit...","aria-label":"Packet limit"})]})]})})]}),a.jsx(H,{packets:T}),a.jsx(F,{noPadding:!0,className:"!overflow-visible",children:a.jsx(R,{packets:T,allPackets:s,localHash:r,neighbors:n,loading:A,showPagination:!0,perPage:50,emptyMessage:"No packets found"})})]})}export{z as default};