1import{d as de,r as y,aI as P,h as ce,a7 as me,b5 as ge,c as h,y as q,U as xe,P as ue,k as he,V as fe,_ as ye,a as l,g as c,b as s,e as x,E as D,n as S,F as f,p as v,t as g,s as A,q as I,o as n}from"./index-DKueJ56C.js";import{U as be}from"./UiDropdown-BTMuH8wV.js";import{U as ve}from"./UiPageLoader-BfEqk5AZ.js";import{D as _e}from"./DateRangePicker-CMnY4Qlx.js";import{C as we}from"./chevron-down-Cv72UE4P.js";import{C as pe}from"./chart-column-Cf1275Rj.js";import{C as ke,a as Ce}from"./chart-line-CPZLdCxK.js";import{T as Me}from"./timer-Dh0rQH77.js";const O=1e3,L=300,Te=de({name:"MeetingsActivity",__name:"ActivityView",setup(Z,{expose:r}){r();const p=y(!0),e=y(null),k=y({from:Math.floor(P.now().minus({days:29}).startOf("day").toSeconds()),to:Math.floor(P.now().endOf("day").toSeconds())}),C=y([]),a=y("all"),m=y("all"),E=y(null),F=y(null),B=[{id:"all",label:"All"},{id:"google_meet",label:"Google Meet"},{id:"zoom",label:"Zoom"},{id:"microsoft_teams",label:"Microsoft Teams"}],J=h(()=>{var t;return a.value==="all"?"General":((t=C.value.find(o=>String(o.id)===a.value))==null?void 0:t.name)||"Team"}),K=h(()=>{var t;return((t=B.find(o=>o.id===m.value))==null?void 0:t.label)||"All"}),Q=y("area"),M=async(t=!1)=>{t||(p.value=!0);const o=await q("POST","meetings/activity",{from:k.value.from,to:k.value.to,team_id:a.value,source:m.value,tz_offset:P.now().offset});e.value=o&&o.data?o.data:null,p.value=!1},z=async()=>{const t=await q("POST","meetings/teams/list");C.value=t&&t.data||[]};ce(async()=>{await z(),await M()}),me([k,a,m],()=>M(),{deep:!0}),ge(()=>{(e.value||!p.value)&&M(!0)});const X=t=>{var o;a.value=t,(o=E.value)==null||o.close()},Y=t=>{var o;m.value=t,(o=F.value)==null||o.close()},$=t=>{if(!t)return"0s";const o=Math.floor(t/3600),i=Math.floor(t%3600/60),d=t%60;return o?`${o}h ${i}m`:i?`${i}m ${d}s`:`${d}s`},u={l:34,r:12,t:16,b:26},b=h(()=>{var t;return((t=e.value)==null?void 0:t.over_time)||[]}),W=h(()=>Math.max(4,...b.value.map(t=>t.count))),U=h(()=>{const t=W.value,o=Math.max(1,Math.ceil(t/4)),i=[];for(let d=0;d<=t;d+=o)i.push(d);return i[i.length-1]!==t&&i.push(t),i}),T=t=>{const o=b.value.length;return o<=1?u.l:u.l+t*(O-u.l-u.r)/(o-1)},j=t=>{const o=U.value[U.value.length-1]||1;return L-u.b-t*(L-u.t-u.b)/o},ee=t=>j(t),H=h(()=>{const t=b.value.map((i,d)=>[T(d),j(i.count)]);if(!t.length)return"";if(t.length===1)return`M ${t[0][0]} ${t[0][1]}`;let o=`M ${t[0][0]} ${t[0][1]}`;for(let i=0;i<t.length-1;i++){const d=t[i-1]||t[i],w=t[i],_=t[i+1],G=t[i+2]||_,re=w[0]+(_[0]-d[0])/6,ne=w[1]+(_[1]-d[1])/6,le=_[0]-(G[0]-w[0])/6,ie=_[1]-(G[1]-w[1])/6;o+=` C ${re} ${ne}, ${le} ${ie}, ${_[0]} ${_[1]}`}return o}),te=h(()=>{if(!b.value.length)return"";const t=L-u.b,o=T(b.value.length-1);return`${H.value} L ${o} ${t} L ${u.l} ${t} Z`}),se=h(()=>{const t=b.value.length;if(!t)return 0;const o=O-u.l-u.r;return Math.max(2,o/t*.6)}),ae=h(()=>{const t=b.value.length;if(!t)return[];const i=Math.max(1,Math.round(t/8));return b.value.map((d,w)=>({i:w,date:d.date})).filter(d=>d.i%i===0||d.i===t-1).map(d=>({x:T(d.i),label:P.fromISO(d.date).toFormat("d LLL")}))}),N=h(()=>{var t;return Math.max(1,...(((t=e.value)==null?void 0:t.per_member)||[]).map(o=>o.count))}),oe=h(()=>{var o;const t=((o=e.value)==null?void 0:o.member_avg)||0;return Math.min(100,t/N.value*100)}),V=y(new Set),R={loading:p,data:e,range:k,teams:C,teamId:a,source:m,teamMenu:E,sourceMenu:F,SOURCES:B,teamLabel:J,sourceLabel:K,chartMode:Q,load:M,loadTeams:z,pickTeam:X,pickSource:Y,fmtDuration:$,W:O,H:L,PAD:u,series:b,maxCount:W,yTicks:U,xFor:T,yFor:j,yTickPos:ee,smoothPath:H,areaPath:te,barWidth:se,xLabels:ae,maxMember:N,avgPct:oe,brokenAvatars:V,onImgError:t=>{const o=new Set(V.value);o.add(t),V.value=o},initialOf:t=>{var o;return((o=(t||"?").trim()[0])==null?void 0:o.toUpperCase())||"?"},get VideoIcon(){return fe},get Clock(){return he},get Timer(){return Me},get AreaChart(){return Ce},get LineChart(){return ke},get BarChart3(){return pe},get Check(){return ue},get ChevronDown(){return we},get Users(){return xe},get UiPageLoader(){return ve},get UiDropdown(){return be},DateRangePicker:_e};return Object.defineProperty(R,"__isScriptSetup",{enumerable:!1,value:!0}),R}}),Pe={class:"p-6 space-y-5"},De={class:"flex flex-wrap items-center justify-between gap-3"},Se={class:"flex flex-wrap items-center gap-2"},Ae={class:"inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white hover:bg-gray-50 px-3 py-2 text-sm text-gray-700 transition-colors"},Le={class:"font-medium max-w-[140px] truncate"},Ue={class:"p-1.5"},je=["onClick"],Ve={class:"flex-1 truncate"},Ie={class:"inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white hover:bg-gray-50 px-3 py-2 text-sm text-gray-700 transition-colors"},Oe={class:"font-medium"},Ee={class:"p-1.5"}
1,Fe=["onClick"],Be={class:"flex-1"},ze={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},We={class:"rounded-2xl border border-gray-200 bg-white p-5 shadow-sm"},He={class:"flex items-start justify-between"},Ne={class:"w-9 h-9 rounded-lg bg-emerald-50 flex items-center justify-center"},Re={class:"text-4xl font-bold text-gray-900 mt-3"},Ge={class:"rounded-2xl border border-gray-200 bg-white p-5 shadow-sm"},qe={class:"flex items-start justify-between"},Ze={class:"w-9 h-9 rounded-lg bg-amber-50 flex items-center justify-center"},Je={class:"text-4xl font-bold text-gray-900 mt-3"},Ke={class:"rounded-2xl border border-gray-200 bg-white p-5 shadow-sm"},Qe={class:"flex items-start justify-between"},Xe={class:"w-9 h-9 rounded-lg bg-sky-50 flex items-center justify-center"},Ye={class:"text-4xl font-bold text-gray-900 mt-3"},$e={class:"rounded-2xl border border-gray-200 bg-white p-5 shadow-sm"},et={class:"flex items-center justify-between mb-4"},tt={class:"inline-flex items-center rounded-lg border border-gray-200 p-0.5"},st=["onClick"],at={key:0,class:"h-[300px] flex flex-col items-center justify-center text-center"},ot={class:"w-12 h-12 rounded-xl bg-gray-50 flex items-center justify-center mb-3"},rt={key:1,class:"overflow-x-auto"},nt=["viewBox"],lt=["x1","x2","y1","y2"],it=["x","y"],dt=["d"],ct=["d"],mt=["x","y","width","height"],gt=["x","y"],xt={class:"rounded-2xl border border-gray-200 bg-white p-5 shadow-sm"},ut={key:0,class:"py-8 text-center text-sm text-gray-400"},ht={key:1,class:"space-y-4"},ft={class:"flex items-center gap-2.5 w-44 shrink-0 min-w-0"},yt=["src","onError"],bt={key:1,class:"w-8 h-8 rounded-full bg-rose-500 text-white flex items-center justify-center text-xs font-semibold"},vt={class:"text-sm font-medium text-gray-800 truncate"},_t={class:"flex-1 min-w-0 relative"},wt={class:"h-8 rounded-lg bg-gray-100 overflow-hidden"},pt={key:0,class:"text-xs font-semibold text-emerald-900 whitespace-nowrap"},kt={class:"absolute -top-6 -translate-x-1/2 whitespace-nowrap text-[11px] text-gray-500 bg-white px-1.5 rounded border border-gray-200"};function Ct(Z,r,p,e,k,C){return n(),l("div",Pe,[c(" Filters "),s("div",De,[r[5]||(r[5]=s("div",null,[s("h1",{class:"text-xl font-bold text-gray-900"},"Activity"),s("p",{class:"text-sm text-gray-500"},"Team meeting activity and engagement.")],-1)),s("div",Se,[c(" Team "),x(e.UiDropdown,{ref:"teamMenu",position:"bottom-right",width:"220px"},{toggle:D(()=>[s("button",Ae,[r[2]||(r[2]=s("span",{class:"text-gray-400"},"Team:",-1)),x(e.Users,{class:"w-4 h-4 text-gray-400"}),s("span",Le,g(e.teamLabel),1),x(e.ChevronDown,{class:"w-4 h-4 text-gray-400"})])]),default:D(()=>[s("div",Ue,[s("button",{class:"w-full flex items-center gap-2 px-2.5 py-2 rounded-lg hover:bg-gray-50 text-sm text-left",onClick:r[0]||(r[0]=a=>e.pickTeam("all"))},[x(e.Check,{class:S(["w-4 h-4",e.teamId==="all"?"text-emerald-600":"text-transparent"])},null,8,["class"]),r[3]||(r[3]=s("span",{class:"flex-1"},"General (everyone)",-1))]),(n(!0),l(f,null,v(e.teams,a=>(n(),l("button",{key:a.id,class:"w-full flex items-center gap-2 px-2.5 py-2 rounded-lg hover:bg-gray-50 text-sm text-left",onClick:m=>e.pickTeam(String(a.id))},[x(e.Check,{class:S(["w-4 h-4",e.teamId===String(a.id)?"text-emerald-600":"text-transparent"])},null,8,["class"]),s("span",Ve,g(a.name),1)],8,je))),128))])]),_:1},512),c(" Source "),x(e.UiDropdown,{ref:"sourceMenu",position:"bottom-right",width:"200px"},{toggle:D(()=>[s("button",Ie,[r[4]||(r[4]=s("span",{class:"text-gray-400"},"Source:",-1)),s("span",Oe,g(e.sourceLabel),1),x(e.ChevronDown,{class:"w-4 h-4 text-gray-400"})])]),default:D(()=>[s("div",Ee,[(n(),l(f,null,v(e.SOURCES,a=>s("button",{key:a.id,class:"w-full flex items-center gap-2 px-2.5 py-2 rounded-lg hover:bg-gray-50 text-sm text-left",onClick:m=>e.pickSource(a.id)},[x(e.Check,{class:S(["w-4 h-4",e.source===a.id?"text-emerald-600":"text-transparent"])},null,8,["class"]),s("span",Be,g(a.label),1)],8,Fe)),64))])]),_:1},512),x(e.DateRangePicker,{modelValue:e.range,"onUpdate:modelValue":r[1]||(r[1]=a=>e.range=a)},null,8,["modelValue"])])]),e.loading?(n(),A(e.UiPageLoader,{key:0})):e.data?(n(),l(f,{key:1},[c(" Stat cards "),s("div",ze,[s("div",We,[s("div",He,[r[6]||(r[6]=s("p",{class:"text-sm font-medium text-gray-500"},"Meetings Held",-1)),s("span",Ne,[x(e.VideoIcon,{class:"w-5 h-5 text-emerald-600"})])]),s("p",Re,g(e.data.summary.meetings_held),1),r[7]||(r[7]=s("p",{class:"text-sm text-gray-400 mt-1"},"Completed external meetings",-1))]),s("div",Ge,[s("div",qe,[r[8]||(r[8]=s("p",{class:"text-sm font-medium text-gray-500"},"Total Call Duration",-1)),s("span",Ze,[x(e.Clock,{class:"w-5 h-5 text-amber-600"})])]),s("p",Je,g(e.fmtDuration(e.data.summary.total_seconds)),1),r[9]||(r[9]=s("p",{class:"text-sm text-gray-400 mt-1"},"Time spent in meetings",-1))]),s("div",Ke,[s("div",Qe,[r[10]||(r[10]=s("p",{class:"text-sm font-medium text-gray-500"},"Avg. Call Duration",-1)),s("span",Xe,[x(e.Timer,{class:"w-5 h-5 text-sky-600"})])]),s("p",Ye,g(e.fmtDuration(e.data.summary.avg_seconds)),1),r[11]||(r[11]=s("p",{class:"text-sm text-gray-400 mt-1"},"Per meeting",-1))])]),c(" Meeting activity over time "),s("div",$e,[s("div",et,[r[12]||(r[12]=s("h2",{class:"text-base font-bold text-gray-900"},"Meeting activity over time",-1)),s("div",tt,[(n(),l(f,null,v(["area","line","bar"],a=>s("button",{key:a,class:S(["w-8 h-7 rounded-md flex items-center justify-center transition-colors",e.chartMode===a?"bg-gray-900 text-white":"text-gray-500 hover:bg-gray-50"]),onClick:m=>e.chartMode=a},[a==="area"?(n(),A(e.AreaChart,{key:0,class:"w-4 h-4"})):a==="line"?(n(),A(e.LineChart,{key:1,class:"w-4 h-4"})):(n(),A(e.BarChart3,{key:2,class:"w-4 h-4"}))],10,st)),64))])]),e.data.total_meetings?(n(),l("div",rt,[(n(),l("svg",{viewBox:`0 0 ${e.W} ${e.H}`,class:"w-full",style:I({minWidth:"520px",height:e.H+"px"}),preserveAspectRatio:"none"},[c(" gridlines + y labels "),s("g",null,[(n(!0),l(f,null,v(e.yTicks,a=>(n(),l("line",{key:"g"+a,x1:e.PAD.l,x2:e.W-e.PAD.r,y1:e.yTickPos(a),y2:e.yTickPos(a),stroke:"#f1f5f9","stroke-width":"1"},null,8,lt))),128)),(n(!0),l(f,null,v(e.yTicks,a=>(n(),l("text",{key:"l"+a,x:e.PAD.l-8,y:e.yTickPos(a)+4,"text-anchor":"end","font-size":"11",fill:"#94a3b8"},g(a),9,it))),128))]),c(" area / line "),e.chartMode!=="bar"?(n(),l(f,{key:0},[r[15]||(r[15]=s("defs",null,[s("linearGradient",{id:"mact",x1:"0",y1:"0",x2:"0",y2:"1"},[s("stop",{offset:"0%","stop-color":"#10b981","stop-opacity":"0.22"}),s("stop",{offset:"100%","stop-color":"#10b981","stop-opacity":"0"})])],-1)),e.chartMode==="area"?(n(),l("path",{key:0,d:e.areaPath,fill:"url(#mact)"},null,8,dt)):c("v-if",!0),s("path",{d:e.smoothPath,fill:"none",stroke:"#10b981","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},null,8,ct)],64)):(n(),l(f,{key:1},[c(" bars "),(n(!0),l(f,null,v(e.series,(a,m)=>
1(n(),l("rect",{key:"b"+m,x:e.xFor(m)-e.barWidth/2,y:e.yFor(a.count),width:e.barWidth,height:Math.max(0,e.H-e.PAD.b-e.yFor(a.count)),rx:"3",fill:"#10b981","fill-opacity":"0.85"},null,8,mt))),128))],64)),c(" x labels "),(n(!0),l(f,null,v(e.xLabels,(a,m)=>(n(),l("text",{key:"x"+m,x:a.x,y:e.H-6,"text-anchor":"middle","font-size":"11",fill:"#94a3b8"},g(a.label),9,gt))),128))],12,nt))])):(n(),l("div",at,[s("div",ot,[x(e.VideoIcon,{class:"w-6 h-6 text-gray-300"})]),r[13]||(r[13]=s("p",{class:"text-sm font-semibold text-gray-700"},"No meetings in this range",-1)),r[14]||(r[14]=s("p",{class:"text-sm text-gray-400 mt-0.5"},"Try a wider date range or a different source.",-1))]))]),c(" Meetings per team member "),s("div",xt,[r[16]||(r[16]=s("h2",{class:"text-base font-bold text-gray-900"},"Meetings per team member",-1)),r[17]||(r[17]=s("p",{class:"text-sm text-gray-500 mb-4"},"Meeting count across the team",-1)),e.data.per_member.length?(n(),l("div",ht,[(n(!0),l(f,null,v(e.data.per_member,a=>(n(),l("div",{key:a.user_id,class:"flex items-center gap-3"},[s("div",ft,[a.image&&!e.brokenAvatars.has(a.user_id)?(n(),l("img",{key:0,src:a.image,alt:"",class:"w-8 h-8 rounded-full object-cover",onError:m=>
1e.onImgError(a.user_id)},null,40,yt)):(n(),l("span",bt,g(e.initialOf(a.name)),1)),s("span",vt,g(a.name),1)]),s("div",_t,[s("div",wt,[s("div",{class:"h-full rounded-lg bg-emerald-200/80 transition-all flex items-center justify-end pr-3",style:I({width:Math.max(4,a.count/e.maxMember*100)+"%"})},[a.count?(n(),l("span",pt,g(a.count)+" "+g(a.count===1?"Meeting":"Meetings"),1)):c("v-if",!0)],4)]),c(" team average marker "),e.data.member_avg?(n(),l("div",{key:0,class:"absolute top-0 bottom-0 border-l-2 border-dashed border-gray-400/70 pointer-events-none",style:I({left:e.avgPct+"%"})},[s("span",kt,"Avg. "+g(e.data.member_avg)+" meetings",1)],4)):c("v-if",!0)])]))),128))])):(n(),l("div",ut,"No team members yet."))])],64)):c("v-if",!0)])}const It=ye(Te,[["render",Ct],["__file","/home/gitlab-runner/weezly-v3/callendo-frontend-v3/src/views/meetings/ActivityView.vue"]]);export{It as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.