internal/dashboard/frontend/dist/assets/PortChart-Xz1yXGfz.js

import{c as e,s as t}from"./chart-DXupaYdX.js";import{Dt as n,Et as r,Gt as i,H as a,It as o,On as s,Pt as c,St as l,Tt as u,Ut as d,Wt as f,bt as p,cn as m,gt as h,ht as g,tn as _,vt as v,xt as y,yt as b}from"./_plugin-vue_export-helper-Df8BHgqR.js";import{w as x,x as S}from"./index-BanWZHpm.js";import{n as C}from"./usePlotlyChart-EBpzvtkr.js";import{i as w,n as T,r as E,t as D}from"./useChartStats-Y1UF0N8D.js";var O={class:`flex h-full flex-col-reverse gap-4 md:flex-row`},k={class:`chart-container`},A={key:0,class:`loader`},j=n({__name:`PortChart`,props:{chartData:{},loading:{type:Boolean},connectionStatus:{}},setup(n){let j=n,M=S(),N=x(),P=d(`chartContainer`),F=_([]),{debouncedDrawPlot:I,allColors:L,allRemoteAddrs:R,allPorts:z}=C(P,v(()=>j.chartData),{onIPClick:e=>U(e),onSelected(e){if(e&&e.points){F.value=e.points,N.selectedIP=void 0,N.selectedPort=void 0,N.selectedCount=e.points.length;let t=new Set;e.points.forEach(e=>{let n=R.value[e.pointIndex];n&&(Array.isArray(n)?n.forEach(e=>e&&t.add(e)):t.add(n))}),N.selectedIPCount=t.size}else F.value=[],N.selectedCount=0,N.selectedIPCount=0},xRange:M.state.x_range,yRange:M.state.y_range,onRelayout:e=>{if(e[`xaxis.range[0]`]&&e[`xaxis.range[1]`]){let t=e[`xaxis.range[0]`].toString(),n=e[`xaxis.range[1]`].toString();M.state.x_range=[t,n],M.state.sync_time_with_chart&&(M.state.time_start=t,M.state.time_end=n)}if(e[`yaxis.range[0]`]&&e[`yaxis.range[1]`]){let t=e[`yaxis.range[0]`],n=e[`yaxis.range[1]`];if(M.state.y_range=[t.toString(),n.toString()],M.state.sync_ports_with_chart){let e=Math.max(Math.round(Number(t)),0),r=Math.min(Math.round(Number(n)),65535);M.state.dst_port=[`${e}-${r}`]}}(e[`xaxis.autorange`]||e[`yaxis.autorange`])&&(e[`xaxis.autorange`]&&(M.state.x_range=[],M.state.sync_time_with_chart&&(M.state.time_start=``,M.state.time_end=``)),e[`yaxis.autorange`]&&(M.state.y_range=[],M.state.sync_ports_with_chart&&(M.state.dst_port=[])))}}),{selectedIP:B,selectedPort:V,selectedColor:H,highlightIP:U,highlightPort:W,resetSelection:G}=T(P,L,R,z),K=v(()=>M.state.x_range),q=v(()=>M.state.y_range),{ipCounts:J,portCounts:Y}=D(v(()=>j.chartData),K,q);f(()=>j.chartData,()=>{I()},{deep:!0});let X=_(!1);return c(()=>{X.value=!0}),(c,d)=>(o(),l(g,null,[X.value?(o(),p(h,{key:0,to:`#chart-actions`},[m(B)||m(V)||m(N).selectedCount>0?(o(),l(`button`,{key:0,type:`button`,onClick:d[0]||=e=>m(G)(),class:`border border-stone-700 bg-stone-800 px-2 py-1 text-xs text-nowrap text-stone-100 hover:bg-stone-700`},[r(m(a),{size:`16`,color:m(H)},null,8,[`color`]),u(` `+s(m(N).selectedCount)+` events (`+s(m(N).selectedIPCount)+` IPs) `,1),d[1]||=b(`kbd`,{class:`ml-1 text-[10px] opacity-50`},`ESC`,-1)])):y(``,!0)])):y(``,!0),b(`div`,O,[r(w,null,{default:i(()=>[m(J).length>0?(o(),p(E,{key:0,open:``,title:`Top IPs`,items:m(J),type:`ip`,"label-key":`ip`,"selected-item":m(B),onClick:m(U),onExclude:m(t)},null,8,[`items`,`selected-item`,`onClick`,`onExclude`])):y(``,!0),m(Y).length>0?(o(),p(E,{key:1,title:`Top Ports`,items:m(Y),type:`port`,"label-key":`port`,"selected-item":m(V),onClick:m(W),onExclude:m(e)},null,8,[`items`,`selected-item`,`onClick`,`onExclude`])):y(``,!0)]),_:1}),b(`div`,k,[n.loading?(o(),l(`div`,A)):y(``,!0),b(`div`,{ref_key:`chartContainer`,ref:P,class:`h-full min-h-0 w-full`},null,512)])])],64))}});export{j as default};