1import{F as dt,r as d,b as I,o as mt,I as y,J as u,K as l,L as s,a0 as et,T as C,a1 as b,V as i,a9 as pt,O as r,f as A,P as g,R as M,S as J,M as h,Q as K,N as f,aa as at,a8 as ft,C as ot,a3 as gt,ab as vt,a2 as st}from"./index-DmMWFTlW.js";import{Q as D}from"./QSelect-Cm7KAHFZ.js";import{Q as ht}from"./QForm-BUKdhqQe.js";import{Q as lt,a as O}from"./QTable-WY2Tuy1f.js";import{Q as _t}from"./QSpace-DvkoovRP.js";import{Q as Y}from"./QChip-Bw_0mvxH.js";import{Q as yt}from"./QInnerLoading-dtZQza8j.js";import{Q as bt}from"./QTr-x1IphCbN.js";import{Q as wt}from"./QPage-B13jEZvj.js";import{C as rt}from"./ClosePopup-CqSTItjh.js";import{u as St}from"./use-quasar-DqtP9Las.js";import{r as R}from"./rules-Cmr9vFm7.js";import{t as Ct}from"./terms-CBE4kpfH.js";import{c as xt}from"./cls-BNGTRSln.js";import{s as qt}from"./section-Ba_XDh3k.js";import{y as Vt}from"./years-C-ru8EGT.js";import"./QItem-RvHevyvj.js";import"./QMenu-B3LFZvpl.js";import"./position-engine-D1Iga1eY.js";import"./selection-9CI4SQ0E.js";import"./rtl-DFPa-2ov.js";import"./format-DyQxkAtJ.js";import"./QList-zMztYSyu.js";import"./QMarkupTable-CvRgMmbQ.js";const Qt=i("div",{class:"text-h6"},"Voting Report",-1),Nt={class:"row q-col-gutter-md"},It={class:"col-12 col-sm-6 col-md-3"},At={class:"col-12 col-sm-6 col-md-3"},Dt={class:"col-12 col-sm-6 col-md-3"},Rt={class:"col-12 col-sm-6 col-md-3"},$t={class:"col-12 flex justify-end"},kt=i("div",{class:"text-subtitle1 q-mb-sm"},"Overall Action Status Summary",-1),Lt={class:"bar-chart-container main-status-chart"},Pt=["title"],Tt={class:"bar-track"},zt={key:1,class:"q-pa-lg flex flex-center column"},jt=i("p",{class:"text-h6 text-grey-7 text-center q-mt-md"},' Select filters and click "View Report" to see student data ',-1),Ut=i("div",{class:"text-h6"},"Student Details",-1),Bt={class:"q-gutter-sm q-mb-md"},Ft={key:0,class:"q-my-md"},Et=i("div",{class:"text-subtitle1 q-mb-sm"},"Action Status Summary",-1),Mt={class:"bar-chart-container student-status-chart"},Jt=["title"],Kt={class:"bar-track"},Ot={key:1,class:"text-grey text-center q-pa-sm"},Yt={class:"q-pa-sm"},Zt={key:2,class:"text-center q-pa-md text-grey"},we={__name:"TenantVotingControl",setup(Gt){const q=St(),Z=dt(),$=d(""),k=d(""),L=d(""),V=d(""),w=d(!1),P=d(!0),S=d([]),Q=d([]),T=d(!1),z=d({}),m=d([]),N=d([]),_=d(!1),G=d(""),j=a=>{if(!a)return"primary";const e=String(a).toLowerCase().trim();return e.includes("urgent contact teacher")?"negative":e.includes("contact teacher")?"warning":e.includes("satisfactory")?"positive":"primary"},H=a=>{if(!a)return"help_outline";const e=String(a).toLowerCase();return e.includes("urgent contact teacher")||e.includes("contact teacher")||e.includes("satisfactory")?"":"o_info"},W=(a,e="row")=>Array.isArray(a)?a.map((t,o)=>({...t,originalData:{...t},uniqueRowId:`${e}-${t.studentId||t.id||o}`})):[],v=I(()=>W(S.value,"main")),x=I(()=>W(m.value,"insight")),nt=async a=>{z.value={...a};const e=a.name_field;if(G.value=e?String(e).trim():a.name?String(a.name).trim():"N/A",m.value=[],N.value=[],_.value=!0,T.value=!0,!a.studentId){q.notify({type:"negative",message:"Student ID is missing. Cannot fetch details.",position:"top-right"}),_.value=!1;return}const t=`api/Student/Report/${V.value}/${a.studentId}/${Z.getSchoolCode}`;try{const{data:o}=await st.get(t),c=Array.isArray(o)?o:o?[o]:[];if(m.value=c,m.value.length>0){const F=m.value[0];N.value=Object.keys(F).filter(n=>n!=="uniqueRowId"&&n!=="originalData").map(n=>({name:n,required:!0,label:X(n),align:"left",field:p=>p[n],sortable:!0,format:p=>tt(p)}))}}catch(o){console.error("Error fetching student insight:",o),m.value=[],N.value=[],q.notify({type:"negative",message:"Failed to load student details.",position:"top-right",timeout:1500})}finally{_.value=!1}},it=a=>{const e=a.originalData;if(!e||!e.actionStatus)return"";const t=String(e.actionStatus).toLowerCase().trim();return t.includes("urgent contact teacher")?"bg-red-1":t.includes("contact teacher")?"bg-yellow-2":t.includes("satisfactory")?"bg-green-1":""},X=a=>a.replace(/_/g," ").replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),tt=a=>
1a==null?"-":typeof a=="string"?a.trim():typeof a=="object"?JSON.stringify(a):a,ut=async()=>{w.value=!0,P.value=!1,S.value=[],Q.value=[];const a=`api/StudentPerformance/Report/${L.value}/${$.value}/${k.value}/${V.value}/${Z.getSchoolCode}`;try{const{data:e}=await st.get(a);if(S.value=Array.isArray(e)?e:e?[e]:[],S.value.length>0){const t=S.value[0],o=Object.keys(t),c={name:"insight",label:"Insight",field:()=>null,align:"center",sortable:!1,style:"width: 100px; max-width: 100px"},F=o.filter(n=>n!=="insight"&&n!=="uniqueRowId"&&n!=="originalData").map(n=>{let p="120px";return n==="studentId"||n==="roll"?p="80px":n==="name_field"?p="180px":n==="actionStatus"?p="150px":(n.includes("score")||n.includes("percentage"))&&(p="90px"),{name:n,label:X(n),field:E=>E[n],align:["studentId","roll","score","percentage","grade"].some(E=>String(n).toLowerCase().includes(E.toLowerCase()))?"center":"left",sortable:!0,style:`width: ${p}; max-width: ${p}`,classes:"ellipsis"}});Q.value=[c,...F]}else q.notify({type:"warning",message:"No data found for the selected criteria.",position:"top-right",timeout:2e3})}catch(e){console.error("Error fetching report data:",e),S.value=[],Q.value=[],q.notify({type:"negative",message:"Failed to load report data.",position:"top-right",timeout:2e3})}finally{w.value=!1}},U=I(()=>{if(!v.value||v.value.length===0)return[];const a=v.value.reduce((t,o)=>{const c=(o.originalData||o).actionStatus||"N/A";return t[c]=(t[c]||0)+1,t},{}),e=v.value.length;return e===0?[]:Object.entries(a).map(([t,o])=>{const c=j(t);return{status:t,count:o,percentage:o/e*100,color:`var(--q-${c})`,rawColor:c,icon:H(t)}}).sort((t,o)=>o.count-t.count)}),B=I(()=>{if(!m.value||m.value.length===0)return[];const a=m.value.reduce((t,o)=>{const c=o.actionStatus||"N/A";return t[c]=(t[c]||0)+1,t},{}),e=m.value.length;return e===0?[]:Object.entries(a).map(([t,o])=>{const c=j(t);return{status:t,count:o,percentage:o/e*100,color:`var(--q-${c})`,rawColor:c,icon:H(t)}}).sort((t,o)=>o.count-t.count)}),ct=a=>{if(!a||!a.actionStatus)return"";const e=String(a.actionStatus).toLowerCase().trim();return e.includes("urgent contact teacher")?"bg-red-1":e.includes("contact teacher")?"bg-yellow-2":e.includes("satisfactory")?"bg-green-1":""};return mt(()=>{P.value=!0}),(a,e)=>(u(),y(wt,{padding:""},{default:l(()=>[s(et,null,{default:l(()=>[s(b,null,{default:l(()=>[Qt]),_:1}),s(b,null,{default:l(()=>[s(ht,{onSubmit:pt(ut,["prevent"])},{default:l(()=>[i("div",Nt,[i("div",It,[s(D,{label:"Select Term",modelValue:L.value,"onUpdate:modelValue":e[0]||(e[0]=t=>L.value=t),options:r(Ct),filled:"",dense:"",rules:[r(R).required],"emit-value":"","map-options":""},null,8,["modelValue","options","rules"])]),i("div",At,[s(D,{label:"Select Class",modelValue:$.value,"onUpdate:modelValue":e[1]||(e[1]=t=>$.value=t),options:r(xt),filled:"",dense:"",rules:[r(R).required],"emit-value":"","map-options":""},null,8,["modelValue","options","rules"])]),i("div",Dt,[s(D,{label:"Select Section",modelValue:k.value,"onUpdate:modelValue":e[2]||(e[2]=t=>k.value=t),options:r(qt),filled:"",dense:"",rules:[r(R).required],"emit-value":"","map-options":""},null,8,["modelValue","options","rules"])]),i("div",Rt,[s(D,{label:"Year",modelValue:V.value,"onUpdate:modelValue":e[3]||(e[3]=t=>V.value=t),options:r(Vt),filled:"",dense:"",rules:[r(R).required],"emit-value":"","map-options":""},null,8,["modelValue","options","rules"])]),i("div",$t,[s(A,{type:"submit",color:"primary",label:"View Report",icon:"search",unelevated:"",loading:w.value},null,8,["loading"])])])]),_:1},8,["onSubmit"])]),_:1}),r(v).length>0&&r(U).length>0?(u(),y(b,{key:0},{default:l(()=>[kt,i("div",Lt,[(u(!0),g(M,null,J(r(U),t=>(u(),g("div",{key:t.status,class:"bar-item q-mb-xs"},[i("div",{class:"bar-label ellipsis",title:t.status+": "+t.count},[t.icon?(u(),y(K,{key:0,name:t.icon,color:t.rawColor,class:"q-mr-xs",size:"xs"},null,8,["name","color"])):C("",!0),h(" "+f(t.status)+" ("+f(t.count)+") ",1)],8,Pt),i("div",Tt,[i("div",{class:"bar-fill",style:at({width:t.percentage+"%",backgroundColor:t.color})},null,4)])]))),128))])]),_:1})):r(v).length>0&&r(U).length===0&&!w.value?(u(),y(b,{key:1,class:"text-grey text-center q-pa-sm"},{default:l(()=>[h(" No action status data available for summary chart. ")]),_:1})):C("",!0),s(b,null,{default:l(()=>[r(v).length>0?(u(),y(lt,{key:0,rows:r(v),columns:Q.value,"row-key":"uniqueRowId",loading:w.value,flat:"",bordered:"",separator:"cell","row-class":it,pagination:{rowsPerPage:10,rowsPerPageOptions:[5,10,15,20,0]},"table-style":{"table-layout":"fixed"},class:"full-width"},{"body-cell-insight":l(t=>[s(O,{props:t},{default:l(()=>[s(A,{size:"sm",color:j(t.row.originalData.actionStatus),icon:"insights",label:"View",dense:"","no-caps":"",unelevated:"",class:"full-width",onClick:o=>nt(t.row.originalData)},null,8,["color","onClick"])]),_:2},1032,["props"])]),"body-cell-actionStatus":l(t=>[s(O,{props:t,class:"ellipsis",title:t.value},{default:l(()=>[h(f(t.value||"N/A"),1)]),_:2},1032,["props","title"])]),_:1},8,["rows","columns","loading"])):!w.value&&!P.value?(u(),g("div",zt,[s(K,{name:"filter_list",color:"grey-5",size:"4rem"}),jt])):C("",!0)]),_:1})]),_:1}),s(ft,{modelValue:T.value,"onUpdate:modelValue":e[4]||(e[4]=t=>T.value=t),"full-height":""},{default:l(()=>[s(et,{style:{width:"90vw","max-width":"900px",height:"100%"}},{default:l(()=>[s(b,{class:"row items-center q-pb-none"},{default:l(()=>[Ut,s(_t),ot(s(A,{icon:"close",flat:"",round:"",dense:""},null,512),[[rt]])]),_:1}),s(b,{style:{"flex-grow":"1","overflow-y":"auto"}},{default:l(()=>[i("div",Bt,[s(Y,{color:"primary","text-color":"white",icon:"person"},{default:l(()=>[h(" Name: "+f(G.value||"N/A"),1)]),_:1}),s(Y,{color:"secondary","text-color":"white",icon:"school"},{default:l(()=>[h(" Class: "+f(z.value.class||"N/A"),1)]),_:1}),s(Y,{color:"accent","text-color":"white",icon:"class"},{default:l(()=>[h(" Section: "+f(z.value.section||"N/A"),1)]),_:1})]),r(x).length>0&&r(B).length>0?(u(),g("div",Ft,[Et,i("div",Mt,[(u(!0),g(M,null,J(r(B),t=>(u(),g("div",{key:t.status,class:"bar-item q-mb-xs"},[i("div",{class:"bar-label ellipsis",title:t.status+": "+t.count}
1,[t.icon?(u(),y(K,{key:0,name:t.icon,color:t.rawColor,class:"q-mr-xs",size:"xs"},null,8,["name","color"])):C("",!0),h(" "+f(t.status)+" ("+f(t.count)+") ",1)],8,Jt),i("div",Kt,[i("div",{class:"bar-fill",style:at({width:t.percentage+"%",backgroundColor:t.color})},null,4)])]))),128))])])):r(x).length>0&&r(B).length===0&&!_.value?(u(),g("div",Ot," No action status data available for chart visualization. ")):C("",!0),s(lt,{flat:"",bordered:"",rows:r(x),columns:N.value,"row-key":"uniqueRowId",loading:_.value,class:"sticky-header-table",style:{"padding-bottom":"8px"},pagination:{rowsPerPage:0}},{loading:l(()=>[s(yt,{showing:_.value},null,8,["showing"])]),body:l(t=>[s(bt,{props:t,class:gt(ct(t.row.originalData))},{default:l(()=>[(u(!0),g(M,null,J(t.cols,o=>(u(),y(O,{key:o.name,props:t},{default:l(()=>[h(f(tt(o.value)),1)]),_:2},1032,["props"]))),128))]),_:2},1032,["props","class"])]),bottom:l(()=>[i("div",Yt," Total Rows: "+f(r(x).length),1)]),_:1},8,["rows","columns","loading"]),r(x).length===0&&!_.value?(u(),g("div",Zt," No detailed data available for this student. ")):C("",!0)]),_:1}),s(vt,{align:"right"},{default:l(()=>[ot(s(A,{flat:"",label:"Close",color:"primary"},null,512),[[rt]])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}))}};export{we 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.