PageSourceSearch

https://niilmuniversity.online/_next/static/chunks/pages/panel/attendance/student-3e3a6d860f0af423.js

js niilmuniversity.online collected 2026-09-24 11:43:33 UTC 14,508 bytes, 1 lines download raw bytes

1void 0===Promise.withResolvers&&(Promise.withResolvers=function(){let e,t;return{promise:new Promise((s,a)=>{e=s,t=a}),resolve:e,reject:t}}),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[83400],{59097:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/panel/attendance/student",function(){return s(98318)}])},98318:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return S}});var a=s(85893),n=s(16506),r=s(39133),l=s(30178),c=s(88057),i=s(87066);s(47041);let o=async(e,t,s)=>{try{let a="".concat(c._n,"/teacher/lecture/student?student_id=").concat(e);t&&(a+="&from_date=".concat(t)),s&&(a+="&to_date=".concat(s));let n=await i.default.get(a,{});if(200===n.status)return n.data.data;return[]}catch(e){return[]}};var d=s(7482),m=s(10177),x=s(89121),u=s(70309),p=s(41687),h=s(97971),g=s(77493),y=s(91819);s(18159);var b=s(5152),f=s.n(b),v=s(11163),j=s(67294),N=s(88767),_=s(84105);let w=f()(()=>Promise.all([s.e(25279),s.e(50497)]).then(s.bind(s,50497)),{loadableGenerated:{webpack:()=>[null]},ssr:!1}),k=e=>{try{return(0,u.D)(e)}catch(t){return new Date(e)}},M=e=>{if(!e)return"";try{if(e.includes("T"))return(0,p.WU)((0,u.D)(e),"h:mm a");let[t,s]=e.split(":"),a=new Date;return a.setHours(Number(t),Number(s),0,0),(0,p.WU)(a,"h:mm a")}catch(t){return e}},C=()=>{var e,t;let s=(0,v.useRouter)(),n=(0,j.useMemo)(()=>s.query.student_id,[s.query.student_id,s.isReady]),[r,c]=(0,j.useState)(()=>(0,p.WU)((0,h.N)(new Date),"yyyy-MM-dd")),[i,d]=(0,j.useState)(()=>(0,p.WU)((0,g.V)(new Date),"yyyy-MM-dd")),{data:u,isLoading:b,isFetching:f,isError:C}=(0,N.useQuery)(["student_lectures",n,r,i],()=>o(Number(n),r,i),{enabled:!!n&&!!r&&!!i,keepPreviousData:!0,refetchOnWindowFocus:!1,refetchOnReconnect:!0,retry:2}),S=(0,j.useMemo)(()=>null!=u?u:[],[u]),P=null!==(t=null===(e=S[0])||void 0===e?void 0:e.student_name)&&void 0!==t?t:"Student",[A,D]=(0,j.useState)("all"),[F,W]=(0,j.useState)(""),E=e=>{let t=new Date;t.setMonth(t.getMonth()+e),c((0,p.WU)((0,h.N)(t),"yyyy-MM-dd")),d((0,p.WU)((0,g.V)(t),"yyyy-MM-dd"))},U=(0,j.useMemo)(()=>{let e=S.length,t=S.filter(e=>e.is_present).length;return{total:e,present:t,absent:e-t,pct:e?Math.round(t/e*100):0}},[S]),T=(0,j.useMemo)(()=>{let e=F.trim().toLowerCase();return S.filter(t=>("present"!==A||!!t.is_present)&&("absent"!==A||!t.is_present)&&(!e||!!"".concat(t.category_name," ").concat(t.sub_category_name," ").concat(t.division_name," ").concat(t.instructor_name).toLowerCase().includes(e)))},[S,A,F]),L=(0,j.useMemo)(()=>{let e=new Map;return T.forEach(t=>{let s=t.date?(0,p.WU)(k(t.date),"yyyy-MM-dd"):"unknown";e.has(s)||e.set(s,[]),e.get(s).push(t)}),Array.from(e.entries()).sort((e,t)=>e[0]<t[0]?1:-1).map(e=>{let[t,s]=e;return{date:t,items:s.sort((e,t)=>e.start_time<t.start_time?-1:1)}})},[T]),R=["Date","Day","Time","Instructor","Status","Reason"],z=()=>T.map(e=>{var t;let s=e.date?k(e.date):null,a=e.start_time||e.end_time?"".concat(M(e.start_time)).concat(e.end_time?" - ".concat(M(e.end_time)):""):"-";return[s?(0,p.WU)(s,"dd MMM yyyy"):"-",s?(0,p.WU)(s,"EEE"):"-",a,[e.instructor_name,e.sub_inst_name].filter(Boolean).join(" & ")||"-",e.is_present?"Present":"Absent",!e.is_present&&(null===(t=e.reason)||void 0===t?void 0:t.Valid)?e.reason.String:"-"]}),B=()=>"".concat(P.replace(/\s+/g,"_"),"_attendance_").concat(r,"_to_").concat(i),O="Range: ".concat(r," to ").concat(i,"  |  Total: ").concat(U.total,"  |  Present: ").concat(U.present,"  |  Absent: ").concat(U.absent,"  |  Attendance: ").concat(U.pct,"%"),I=()=>{let e=z();if(!e.length){(0,l.CF)("error","No records to export");return}let t=[["Student",P],["Date Range","".concat(r," to ").concat(i)],["Total Lectures",U.total],["Present",U.present],["Absent",U.absent],["Attendance %","".concat(U.pct,"%")]],s=_.utils.aoa_to_sheet(t);_.utils.sheet_add_aoa(s,[R,...e],{origin:"A".concat(t.length+2)}),s["!cols"]=R.map((t,s)=>({wch:Math.max(t.length,...e.map(e=>{var t;return String(null!==(t=e[s])&&void 0!==t?t:"").length}))+4}));let a=_.utils.book_new();_.utils.book_append_sheet(a,s,"Attendance"),_.writeFile(a,"".concat(B(),".xlsx")),(0,l.CF)("success","Excel downloaded")},V=()=>{let e=z();if(!e.length){(0,l.CF)("error","No records to export");return}let t=new y.default;t.setFontSize(15),t.text("".concat(P," — Attendance Report"),14,18),t.setFontSize(9),t.setTextColor(110),t.text(O,14,26),t.setTextColor(0),t.autoTable({head:[R],body:e,startY:32,theme:"grid",styles:{fontSize:8,cellPadding:2},headStyles:{fillColor:[61,99,234]},didParseCell:e=>{"body"===e.section&&4===e.column.index&&(e.cell.styles.textColor="Present"===e.cell.raw?[0,171,85]:[231,81,90])}}),t.save("".concat(B(),".pdf")),(0,l.CF)("success","PDF downloaded")},q={series:[U.present,U.absent],options:{labels:["Present","Absent"],colors:["#00ab55","#e7515a"],chart:{fontFamily:"inherit"},stroke:{show:!1},legend:{show:!1},dataLabels:{enabled:!1},plotOptions:{pie:{donut:{size:"72%",labels:{show:!0,total:{show:!0,label:"Attendance",fontSize:"13px",color:"#888ea8",formatter:()=>"".concat(U.pct,"%")},value:{fontSize:"22px",fontWeight:700}}}}}}},H=e=>{let{label:t,value:s,accent:n}=e;return(0,a.jsxs)("div",{className:"panel flex flex-col gap-1",children:[(0,a.jsx)("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:t}),(0,a.jsx)("span",{className:"text-2xl font-bold ".concat(n),children:s})]})};if(b)return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)("div",{className:"h-24 panel animate-pulse"}),(0,a.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:Array.from({length:4}).map((e,t)=>(0,a.jsx)("div",{className:"h-24 panel animate-pulse"},t))}),(0,a.jsx)("div",{className:"h-96 panel animate-pulse"})]});if(C)return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("button",{onClick:()=>s.back(),className:"text-sm text-primary hover:underline",children:"← Back"}),(0,a.jsx)("div",{className:"panel p-10 text-center text-danger",children:"Failed to load attendance. Please try again."})]});let X=U.pct>=75?"text-success":U.pct>=50?"text-warning":"text-danger";return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[(0,a.jsx)("div",{className:"flex items-center gap-3",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"grid h-12 w-12 place-items-center rounded-full bg-primary/10 text-lg font-bold text-primary",children:P.charAt(0).toUpperCase()}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold",children:P}),(0,a.jsx)("p",{className:"text-sm text-gray-500",children:"Attendance Records"})]})]})}),(0,a.jsxs)(m.v,{as:"div",className:"relative inline-block text-left",children:[(0,a.jsxs)(m.v.Button,{disabled:!T.length,className:"inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",children:[(0,a.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,a.jsx)("polyline",{points:"7 10 12 15 17 10"}),(0,a.jsx)("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]}),"Download",(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,a.jsx)(x.u,{as:j.Fragment,enter:"transition ease-out duration-100",enterFrom:"transform opacity-0 scale-95",enterTo:"transform opacity-100 scale-100",leave:"transition ease-in duration-75",leaveFrom:"transform opacity-100 scale-100",leaveTo:"transform opacity-0 scale-95",children:(0,a.jsxs)(m.v.Items,{className:"absolute right-0 z-10 mt-2 w-44 origin-top-right rounded-md border border-gray-100 bg-white p-1 shadow-lg focus:outline-none dark:border-gray-700 dark:bg-gray-800",children:[(0,a.jsx)(m.v.Item,{children:e=>{let{active:t}=e;return(0,a.jsxs)("button",{onClick:I,className:"flex w-full items-center gap-2 rounded px-3 py-2 text-sm ".concat(t?"bg-gray-100 dark:bg-gray-700":""),children:[(0,a.jsx)("span",{className:"text-success",children:"▦"})," Excel (.xlsx)"]}
1)}}),(0,a.jsx)(m.v.Item,{children:e=>{let{active:t}=e;return(0,a.jsxs)("button",{onClick:V,className:"flex w-full items-center gap-2 rounded px-3 py-2 text-sm ".concat(t?"bg-gray-100 dark:bg-gray-700":""),children:[(0,a.jsx)("span",{className:"text-danger",children:"▤"})," PDF (.pdf)"]})}})]})})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-3",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:col-span-2",children:[(0,a.jsx)(H,{label:"Total Lectures",value:U.total,accent:"text-primary"}),(0,a.jsx)(H,{label:"Present",value:U.present,accent:"text-success"}),(0,a.jsx)(H,{label:"Absent",value:U.absent,accent:"text-danger"}),(0,a.jsx)(H,{label:"Attendance",value:"".concat(U.pct,"%"),accent:X})]}),(0,a.jsx)("div",{className:"panel flex items-center justify-center",children:U.total>0?(0,a.jsx)(w,{options:q.options,series:q.series,type:"donut",height:220}):(0,a.jsx)("span",{className:"text-gray-400",children:"No data"})})]}),(0,a.jsxs)("div",{className:"panel space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-end gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"From"}),(0,a.jsx)("input",{type:"date",className:"form-input w-44",value:r,max:i,onChange:e=>c(e.target.value)})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"To"}),(0,a.jsx)("input",{type:"date",className:"form-input w-44",value:i,min:r,onChange:e=>d(e.target.value)})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>E(0),className:"rounded-md border border-gray-200 px-3 py-2 text-sm hover:bg-gray-100 dark:border-gray-700 dark:hover:bg-gray-800",children:"This month"}),(0,a.jsx)("button",{onClick:()=>E(-1),className:"rounded-md border border-gray-200 px-3 py-2 text-sm hover:bg-gray-100 dark:border-gray-700 dark:hover:bg-gray-800",children:"Last month"})]}),f&&(0,a.jsx)("span",{className:"text-sm text-gray-400",children:"Updating…"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4 border-t border-gray-100 pt-4 dark:border-gray-800 md:flex-row md:items-end md:justify-between",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"Status"}),(0,a.jsx)("div",{className:"inline-flex overflow-hidden rounded-md border border-gray-200 dark:border-gray-700",children:["all","present","absent"].map(e=>(0,a.jsx)("button",{onClick:()=>D(e),className:"px-4 py-2 text-sm capitalize transition ".concat(A===e?"bg-primary text-white":"bg-transparent text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"),children:e},e))})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"Search"}),(0,a.jsx)("input",{type:"text",placeholder:"Subject, division, instructor...",className:"form-input w-full md:w-72",value:F,onChange:e=>W(e.target.value)})]})]})]}),0===L.length?(0,a.jsx)("div",{className:"panel p-10 text-center text-gray-500",children:"No lectures match the selected filters."}):(0,a.jsx)("div",{className:"space-y-6",children:L.map(e=>{let{date:t,items:s}=e,n=s.filter(e=>e.is_present).length;return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("div",{className:"mb-4 flex items-center justify-between border-b border-gray-100 pb-3 dark:border-gray-800",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsxs)("div",{className:"grid h-12 w-12 flex-col place-items-center rounded-lg bg-gray-100 dark:bg-gray-800",children:[(0,a.jsx)("span",{className:"text-lg font-bold leading-none",children:"unknown"!==t?(0,p.WU)(k(t),"dd"):"--"}),(0,a.jsx)("span",{className:"text-[10px] uppercase text-gray-500",children:"unknown"!==t?(0,p.WU)(k(t),"MMM"):""})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-semibold",children:"unknown"!==t?(0,p.WU)(k(t),"EEEE, dd MMM yyyy"):"Unknown date"}),(0,a.jsxs)("p",{className:"text-sm text-gray-500",children:[n,"/",s.length," present"]})]})]})}),(0,a.jsx)("div",{className:"space-y-3",children:s.map((e,t)=>{var s;return(0,a.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border p-3 md:flex-row md:items-center md:justify-between ".concat(e.is_present?"border-success/30 bg-success/5":"border-danger/30 bg-danger/5"),children:[(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"mt-1 h-2.5 w-2.5 shrink-0 rounded-full ".concat(e.is_present?"bg-success":"bg-danger")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:e.course_title||e.category_name||"Lecture"}),(0,a.jsx)("p",{className:"text-sm text-gray-500",children:[e.category_name,e.division_name&&"Div ".concat(e.division_name)].filter(
1Boolean).join(" • ")}),e.instructor_name&&(0,a.jsxs)("p",{className:"text-xs text-gray-400",children:["by ",e.instructor_name,e.sub_inst_name?" & ".concat(e.sub_inst_name):""]}),!e.is_present&&(null===(s=e.reason)||void 0===s?void 0:s.Valid)&&e.reason.String&&(0,a.jsxs)("p",{className:"mt-1 text-xs italic text-danger",children:["Reason: ",e.reason.String]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 pl-5 md:pl-0",children:[(e.start_time||e.end_time)&&(0,a.jsxs)("span",{className:"text-sm text-gray-500",children:[M(e.start_time),e.end_time?" - ".concat(M(e.end_time)):""]}),(0,a.jsx)("span",{className:"badge ".concat(e.is_present?"badge-outline-success":"badge-outline-danger"),children:e.is_present?"Present":"Absent"})]})]},"".concat(e.attendence_id,"-").concat(t))})})]},t)})})]})};C.getLayout=e=>{let t=d.h.getState().userData;return 4===t.role_id&&0!==t.sub_role_id?(0,a.jsx)(n.Z,{children:e}):(0,a.jsx)(r.Z,{children:e})};var S=C},20067:function(){},72061:function(){}},function(e){e.O(0,[67847,2251,70917,93021,24750,97083,81397,90457,11283,73011,27164,93778,18159,93278,41687,28996,59100,46827,66183,67644,39133,16506,92888,49774,40179],function(){return e(e.s=59097)}),_N_E=e.O()}]);

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.