import{C as e,D as t,E as n,d as r,l as i,n as a,t as o,u as s,w as c,y as l}from"./chart-DXupaYdX.js";import{Dt as u,It as d,Pt as f,St as p,Ut as m,Wt as h,bt as g,ct as _,r as v,tn as y,xt as b,yt as x}from"./_plugin-vue_export-helper-Df8BHgqR.js";import{T as S,_ as C,h as w,x as T,y as E}from"./index-BanWZHpm.js";var D=t(n(),1),O={class:`flex h-full flex-col gap-4 pt-2`},k={class:`chart-container`},A=u({__name:`ActivityChart`,props:{chartData:{},loading:{type:Boolean},connectionStatus:{}},setup(t){let n=T(),u=m(`chartContainer`),A=y(!1),j=y([]);async function M(){A.value=!0;try{let e=C(n.state),t=new URLSearchParams(e);!t.get(`time_start`)&&n.state.x_range?.[0]&&t.set(`time_start`,v(n.state.x_range[0])),!t.get(`time_end`)&&n.state.x_range?.[1]&&t.set(`time_end`,v(n.state.x_range[1])),t.set(`limit`,a.toString());let r=await fetch(`${S()}/api/stats/activity-over-time?${t.toString()}`);if(!r.ok)throw Error(`Failed to fetch activity`);j.value=await r.json(),N()}catch(e){console.error(e)}finally{A.value=!1}}function N(){if(!u.value)return;if(j.value.length===0){D.default.purge(u.value);return}let t={};j.value.forEach(e=>{t[e.type]||(t[e.type]={x:[],y:[]});let n=t[e.type];n.x.push(new Date(e.time)),n.y.push(e.count)});let a=Object.entries(t).map(([e,n],r)=>({x:n.x,y:n.y,name:E(e)?.label||e,type:`scatter`,mode:`lines`,line:{shape:`linear`,width:2,color:i(r,Object.keys(t).length)},hoverlabel:{bgcolor:`#141210`,font:{color:`#ccc`,size:12}}})),d={xaxis:{title:{text:`Time`,font:{size:12,color:c}},type:`date`,gridcolor:s,range:n.state.x_range&&n.state.x_range.length===2?[...n.state.x_range]:void 0,tickfont:{color:c,size:12},showspikes:!0,spikemode:`across`,spikecolor:e,spikethickness:-2},yaxis:{title:{text:`Events per Minute`,font:{size:12,color:c}},gridcolor:s,zerolinecolor:s,tickfont:{color:c,size:12}},margin:o,paper_bgcolor:`transparent`,plot_bgcolor:`transparent`,font:{color:c},showlegend:!0,legend:{orientation:`h`,y:-.2,font:{size:12}},hovermode:`x unified`,hoverlabel:r,modebar:l};D.default.react(u.value,a,d,{responsive:!0,displaylogo:!1,modeBarButtonsToRemove:[`lasso2d`,`select2d`]});let f=u.value;f.removeAllListeners?.(`plotly_relayout`),f.on(`plotly_relayout`,e=>{if(e[`xaxis.range[0]`]&&e[`xaxis.range[1]`]){let t=e[`xaxis.range[0]`].toString(),r=e[`xaxis.range[1]`].toString();n.state.x_range=[t,r],n.state.sync_time_with_chart&&(n.state.time_start=t,n.state.time_end=r)}e[`xaxis.autorange`]&&(n.state.x_range=[],n.state.sync_time_with_chart&&(n.state.time_start=``,n.state.time_end=``))})}return f(()=>{M()}),h([()=>C(n.state),()=>n.state.x_range],()=>{M()},{deep:!0}),_(u,()=>{u.value&&D.default.Plots.resize(u.value)}),(e,t)=>(d(),p(`div`,O,[x(`div`,k,[A.value?(d(),g(w,{key:0})):b(``,!0),x(`div`,{ref_key:`chartContainer`,ref:u,class:`h-full w-full rounded-lg`},null,512)])]))}});export{A as default};