1import{a6 as w,a7 as x,_ as V,o as c,d as _,e as o,h as a,w as s,J as f,t as n,I as b,N as y,i as g,a8 as k,j as v,k as h,B as T}from"./admin-CMGpZsj2.js";import{Q as m}from"./QTd-Pnig8V5e.js";import{Q as p}from"./QTable-B2XxdEIW.js";import{Q as q}from"./QBadge-NJgRm31p.js";import{h as C}from"./moment-BLMuvzoS.js";import"./use-fullscreen-C0ckTti0.js";const B=w("login_history",{state:()=>({data:{}}),actions:{fetch(l={}){return new Promise((e,u)=>{x.get("login-history",{params:l}).then(d=>{var i;this.data=(i=d==null?void 0:d.data)==null?void 0:i.data,e(d.data)},d=>{u(d.response.data)})})}}}),D={name:"LoginHistory",setup(){return{store:B()}},data(){return{loading:!1,filters:{portal:null,branch_id:null,from:"",to:"",q:""},portalOptions:[{label:"Client",value:"client"},{label:"Staff",value:"staff"},{label:"Parent",value:"parent"}],columns:[{name:"id",label:"#",field:"id",align:"left",sortable:!0},{name:"user_name",label:"User",field:"user_name",align:"left",sortable:!0},{name:"portal",label:"Portal",field:"portal",align:"left",sortable:!0},{name:"branch_name",label:"Branch",field:"branch_name",align:"left",sortable:!0},{name:"ip_address",label:"IP Address",field:"ip_address",align:"left"},{name:"device",label:"Device",field:"device",align:"left"},{name:"login_at",label:"Login At",field:"login_at",align:"left",sortable:!0},{name:"logout_at",label:"Logout At",field:"logout_at",align:"left"},{name:"duration_minutes",label:"Duration",field:"duration_minutes",align:"right",sortable:!0}],dailyColumns:[{name:"date",label:"Date",field:"date",align:"left",sortable:!0},{name:"logins",label:"Logins",field:"logins",align:"left",sortable:!0},{name:"minutes",label:"Total Time",field:"minutes",align:"right",sortable:!0}],branchColumns:[{name:"branch",label:"Branch",field:"branch",align:"left",sortable:!0},{name:"logins",label:"Logins",field:"logins",align:"left",sortable:!0},{name:"minutes",label:"Total Time",field:"minutes",align:"right",sortable:!0}]}},computed:{histories(){var l;return((l=this.store.data)==null?void 0:l.histories)||[]},summary(){var l;return((l=this.store.data)==null?void 0:l.summary)||{}},dailyTotals(){var l;return((l=this.store.data)==null?void 0:l.daily_totals)||[]},branchActivity(){var l;return((l=this.store.data)==null?void 0:l.branch_activity)||[]},branchOptions(){var l;return(((l=this.store.data)==null?void 0:l.branches)||[]).map(e=>({label:e.name,value:e.id}))}},methods:{fmtDate(l){return l?C(l).format("DD MMM YYYY, hh:mm A"):"â"},fmtMins(l){if(l=parseInt(l||0),l<=0)return"0m";const e=Math.floor(l/60),u=l%60;return`${e?e+"h ":""}${u?u+"m":e?"":"0m"}`.trim()},portalLabel(l){return{client:"Client",staff:"Staff",parent:"Parent"}[l]||l},reset(){this.filters={portal:null,branch_id:null,from:"",to:"",q:""},this.load()},load(){this.loading=!0;const l={};Object.keys(this.filters).forEach(e=>{this.filters[e]&&(l[e]=this.filters[e])}),this.store.fetch(l).finally(()=>this.loading=!1)}},mounted(){this.load()}},L={class:"q-pa-md"},Q={class:"row q-col-gutter-md q-mb-md"},A={class:"col-6 col-md-3"},M={class:"text-h5"},S={class:"col-6 col-md-3"},U={class:"text-h5"},P={class:"col-6 col-md-3"},I={class:"text-h5"},N={class:"col-6 col-md-3"},O={class:"text-h5"},H={class:"col-6 col-md-2"},Y={class:"col-6 col-md-2"},K={class:"col-6 col-md-2"},j={class:"col-6 col-md-2"},E={class:"col-6 col-md-2"},F={class:"col-6 col-md-2"},J={class:"row q-col-gutter-md q-mb-md"},R={class:"col-12 col-md-6"},z={class:"col-12 col-md-6"},G={key:0},W={key:0},X={key:1};function Z(l,e,u,d,i,r){return c(),_("div",L,[e[9]||(e[9]=o("div",{class:"row items-center q-mb-md"},[o("div",{class:"text-h5 col"},"Login & Time History")],-1)),o("div",Q,[o("div",A,[a(b,{class:"bg-primary text-white"},{default:s(()=>[a(f,null,{default:s(()=>[e[5]||(e[5]=o("div",{class:"text-caption"},"Total Logins",-1)),o("div",M,n(r.summary.total_logins||0),1)]),_:1})]),_:1})]),o("div",S,[a(b,{class:"bg-green text-white"},{default:s(()=>[a(f,null,{default:s(()=>[e[6]||(e[6]=o("div",{class:"text-caption"},"Total Time",-1)),o("div",U,n(r.fmtMins(r.summary.total_minutes)),1)]),_:1})]),_:1})]),o("div",P,[a(b,{class:"bg-teal text-white"},{default:s(()=>[a(f,null,{default:s(()=>[e[7]||(e[7]=o("div",{class:"text-caption"},"Unique Users",-1)),o("div",I,n(r.summary.unique_users||0),1)]),_:1})]),_:1})]),o("div",N,[a(b,{class:"bg-grey-9 text-white"},{default:s(()=>[a(f,null,{default:s(()=>[e[8]||(e[8]=o("div",{class:"text-caption"},"Active Now",-1)),o("div",O,n(r.summary.active_now||0),1)]),_:1})]),_:1})])]),a(b,{flat:"",bordered:"",class:"q-mb-md"},{default:s(()=>[a(f,{class:"row q-col-gutter-md items-end"},{default:s(()=>[o("div",H,[a(y,{outlined:"",dense:"",modelValue:i.filters.portal,"onUpdate:modelValue":e[0]||(e[0]=t=>i.filters.portal=t),options:i.portalOptions,label:"Portal","emit-value":"","map-options":"",clearable:""},null,8,["modelValue","options"])]),o("div",Y,[a(y,{outlined:"",dense:"",modelValue:i.filters.branch_id,"onUpdate:modelValue":e[1]||(e[1]=t=>i.filters.branch_id=t),options:r.branchOptions,label:"Branch","emit-value":"","map-options":"",clearable:""},null,8,["modelValue","options"])]),o("div",K,[a(g,{outlined:"",dense:"",modelValue:i.filters.from,"onUpdate:modelValue":e[2]||(e[2]=t=>i.filters.from=t),label:"From",type:"date","stack-label":""},null,8,["modelValue"])]),o("div",j,[a(g,{outlined:"",dense:"",modelValue:i.filters.to,"onUpdate:modelValue":e[3]||(e[3]=t=>i.filters.to=t),label:"To",type:"date","stack-label":""},null,8,["modelValue"])]),o("div",E,[a(g,{outlined:"",dense:"",modelValue:i.filters.q,"onUpdate:modelValue":e[4]||(e[4]=t=>i.filters.q=t),label:"Search (name / IP)",clearable:"",onKeyup:k(r.load,["enter"])},null,8,["modelValue","onKeyup"])]),o("div",F,[a(v,{color:"primary",label:"Filter",onClick:r.load,loading:i.loading,class:"q-mr-sm"},null,8,["onClick","loading"]),a(v,{flat:"",color:"grey-8",label:"Reset",onClick:r.reset},null,8,["onClick"])])]),_:1})]),_:1}),o("div",J,[o("div",R,[a(p,{title:"Daily Total Time",rows:r.dailyTotals,columns:i.dailyColumns,"row-key":"date",dense:"",flat:"",bordered:"","rows-per-page-options":[5,10,0],"hide-bottom-if-few":""},{"body-cell-minutes":s(t=>[a(m,{props:t},{default:s(()=>[h(n(r.fmtMins(t.row.minutes)),1)]),_:2},1032,["props"])]),_:1},8,["rows","columns"])]),o("div",z,[a(p,{title:"Branch Activity",rows:r.branchActivity,columns:i.branchColumns,"row-key":"branch",dense:"",flat:"",bordered:"","rows-per-page-options":[5,10,0],"hide-bottom-if-few":""},{"body-cell-minutes":s(t=>[a(m,{props:t},{default:s(()=>[h(n(r.fmtMins(t.row.minutes)),1)]),_:2},1032,["props"])]),_:1},8,["rows","columns"])])]),a(p,{title:"Session Details",rows:r.histories,columns:i.columns,"row-key":"id",loading:i.loading,"rows-per-page-options":[10,25,50,100],dense:"",flat:"",bordered:""},{"body-cell-login_at":s(t=>[a(m,{props:t},{default:s(()=>[h(n(r.fmtDate(t.row.login_at)),1)]),_:2},1032,["props"])]),"body-cell-logout_at":s(t=>[a(m,{props:t},{default:s(()=>[t.row.logout_at?(c(),_("span",G,n(r.fmtDate(t.row.logout_at)),1)):(c(),T(q,{key:1,color:"green",label:"Active"}))]),_:2},1032,["props"])]),"body-cell-duration_minutes":s(t=>[a(m,{props:t},{default:s(()=>[t.row.duration_minutes!==null?(c(),_("span",W,n(r.fmtMins(t.row.duration_minutes)),1)):(c(),_("span",X,"â"))]),_:2},1032,["props"])]),"body-cell-portal":s(t=>[a(m,{props:t},{default:s(()=>[h(n(r.portalLabel(t.row.portal)),1)]),_:2},1032,["props"])]),_:1},8,["rows","columns","loading"])])}const se=V(D,[["render",Z]]);
1export{se 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.