In Progress
phenix-rep56
<94eib04...4563ghbjbjn>
Actions
RF NOISE FLOOR
Duty Cycle: 0.0% / 6.0%
Last Updated: 18:55:24
',7))])])])])):ps("",!0)}}),uet={class:"glass-card p-6 mb-5 rounded-[20px] relative z-10"},cet={class:"flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4"},het={class:"flex items-center gap-3"},fet={class:"text-right mr-4"},det={key:0,class:"flex items-center gap-2"},pet={key:1,class:"space-y-1"},met={class:"text-dark-text text-sm"},get={class:"text-primary font-medium"},vet={key:0,class:"text-xs text-dark-text/80"},yet={key:0},xet={key:1,class:"text-xs text-dark-text/60"},_et={key:2},bet={key:0,class:"text-xs text-dark-text/60"},wet=["disabled"],ket={class:"flex items-center justify-between mb-3"},Tet={class:"flex items-center gap-2"},Aet=["disabled"],Met=["disabled"],Eet={class:"space-y-3 text-sm"},Cet={key:0,class:"bg-[#0B1014] p-3 rounded-lg border border-accent-red/30 border-l-2 border-l-accent-red"},Let={class:"flex items-center justify-between"},Pet={class:"text-accent-red font-bold"},zet={class:"text-xs text-gray-400 mt-1"},Iet={key:1,class:"bg-[#0B1014] p-3 rounded-lg border border-white/10 border-l-2 border-l-accent-green"},Oet={class:"flex items-center justify-between"},Det={class:"text-accent-green font-bold"},Fet={key:0,class:"text-xs text-gray-400 mt-1"},Ret={key:2,class:"bg-[#0B1014] p-3 rounded-lg border border-white/10"},Bet={key:3,class:"bg-[#0B1014] p-3 rounded-lg border border-accent-red/30 border-l-2 border-l-accent-red"},Net={class:"text-xs text-gray-400"},jet={class:"bg-[#0B1014] p-3 rounded-lg border border-white/10 border-l-2 border-l-primary"},Uet={class:"flex items-center justify-between"},Vet={class:"text-primary font-bold"},Het={key:0,class:"text-xs text-gray-400 mt-1"},Wet={class:"flex items-center justify-between"},qet={class:"text-white font-medium"},Zet={key:0,class:"mt-2"},$et={class:"text-xs text-gray-400"},Get={class:"text-gray-300"},Yet={key:4,class:"bg-[#0B1014] p-4 rounded-lg border border-white/10 text-center"},Ket={key:5,class:"bg-[#0B1014] p-3 rounded-lg border border-white/10 text-center"},Xet=ah({name:"TopBar",__name:"TopBar",emits:["toggleMobileSidebar"],setup(d,{emit:l}){const z=l,j=gg(),J=ro(!1),mt=ro(null),kt=ro({hasUpdate:!1,currentVersion:"",latestVersion:"",isChecking:!1,lastChecked:null,error:null}),Dt=ro({}),$t=ro(!0),ee=ro(null),pe=["Chat Node","Repeater","Room Server"];function Be(Gi){const En=Gi.target;mt.value&&!mt.value.contains(En)&&(J.value=!1)}const ir=async()=>{try{$t.value=!0;const Gi={};for(const En of pe)try{const Fa=await Ah.get(`/adverts_by_contact_type?contact_type=${encodeURIComponent(En)}&hours=168`);Fa.success&&Array.isArray(Fa.data)?Gi[En]=Fa.data:Gi[En]=[]}catch(Fa){console.error(`Error fetching ${En} nodes:`,Fa),Gi[En]=[]}Dt.value=Gi,ee.value=new Date}catch(Gi){console.error("Error updating tracked nodes:",Gi)}finally{$t.value=!1}},vr=async()=>{if(!kt.value.isChecking)try{kt.value.isChecking=!0,kt.value.error=null,await j.fetchStats();const Gi=j.version;if(!Gi||Gi==="Unknown"){kt.value.error="Unable to determine current version";return}const Fa=await fetch("https://raw.githubusercontent.com/rightup/pyMC_Repeater/main/repeater/__init__.py");if(!Fa.ok)throw new Error(`GitHub request failed: ${Fa.status}`);const Ni=(await Fa.text()).match(/__version__\s*=\s*["']([^"']+)["']/);if(!Ni)throw new Error("Could not parse version from GitHub file");const zi=Ni[1];kt.value.currentVersion=Gi,kt.value.latestVersion=zi,kt.value.lastChecked=new Date,kt.value.hasUpdate=Gi!==zi}catch(Gi){console.error("Error checking for updates:",Gi),kt.value.error=Gi instanceof Error?Gi.message:"Failed to check for updates"}finally{kt.value.isChecking=!1}},Ir=Ko(()=>Object.values(Dt.value).reduce((En,Fa)=>En+Fa.length,0)),Pr=Ko(()=>pe.map(En=>({type:En,count:Dt.value[En]?.length||0})).filter(En=>En.count>0)),Wr=Ko(()=>kt.value.hasUpdate||Ir.value>0),Tn=Gi=>({"Chat Node":"text-blue-400",Repeater:"text-accent-green","Room Server":"text-accent-purple"})[Gi]||"text-gray-400",Ft=Gi=>{const En=Dt.value[Gi]||[];return En.length===0?"None":En.reduce((Sa,Ni)=>Ni.last_seen>Sa.last_seen?Ni:Sa,En[0]).node_name||"Unknown Node"};let wn=null,ei=null;const jn=()=>{wn&&clearInterval(wn),wn=setInterval(()=>{ir()},3e4),ei&&clearInterval(ei),ei=setInterval(()=>{vr()},6e5)},ai=()=>{wn&&(clearInterval(wn),wn=null),ei&&(clearInterval(ei),ei=null)};i0(()=>{document.addEventListener("click",Be),ir(),vr(),jn()}),mg(()=>{document.removeEventListener("click",Be),ai()});const Qi=()=>{z("toggleMobileSidebar")};return(Gi,En)=>(Si(),Fi("div",uet,[Oe("div",cet,[Oe("div",{class:"flex items-center gap-3"},[Oe("button",{onClick:Qi,class:"lg:hidden w-10 h-10 rounded bg-[#1A1E1F] flex items-center justify-center hover:bg-[#2A2E2F] transition-colors"},En[2]||(En[2]=[Oe("svg",{class:"w-5 h-5 text-white",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[Oe("path",{d:"M3 6h14M3 10h14M3 14h14",stroke:"white","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])),En[3]||(En[3]=Oe("div",null,[Oe("h1",{class:"text-white text-[35px] font-bold mb-2"},"Welcome👋")],-1))]),Oe("div",het,[Oe("div",fet,[$t.value?(Si(),Fi("div",det,En[4]||(En[4]=[Oe("div",{class:"animate-spin rounded-full h-3 w-3 border-b-2 border-primary"},null,-1),Oe("p",{class:"text-dark-text text-sm"},"Loading tracking data...",-1)]))):Ir.value>0?(Si(),Fi("div",pet,[Oe("p",met,[En[5]||(En[5]=nc(" Tracking: ",-1)),Oe("span",get,na(Ir.value)+" node"+na(Ir.value===1?"":"s"),1)]),Pr.value.length>1?(Si(),Fi("div",vet,[(Si(!0),Fi(Ou,null,sf(Pr.value,(Fa,Sa)=>(Si(),Fi("span",{key:Fa.type,class:"inline"},[nc(na(Fa.count)+" "+na(Fa.type)+na(Fa.count===1?"":"s"),1),SaIn Progress
Packet Activity (Last 24 Hours)
Packet Activity (Last 24 Hours)