๐ File Manager
๐
/
/
home
/
u449181296
/
domains
/
birulogi.smakpbaleendah.sch.id
/
public_html
/
lms
/
tukang-ngatur
/
assets
/
img
/
qr-logos
/home/u449181296/domains/birulogi.smakpbaleendah.sch.id/public_html/lms/tukang-ngatur/assets/img/qr-logos
Upload
Name
Size
Date
CHMOD
Action
โ FILE โ
logo_1773801405.php
6.73 KB
2026-03-18 02:36
644
(rw-r--r--)
Edit
|
Rename
|
Preview
|
Del
Edit
import{r as i,j as e}from"./react-vendor-Cdu9POhR.js";import{R as Re}from"./RunningTextMarquee-CokSy547.js";import{s as ce,l as $e,k as We,c as Ue,e as Oe,d as oe}from"./index-g-CJvtxD.js";import{n as Xe}from"./studentIdentity-CvcNiiMo.js";import{o as j,f as me,q as $,w as W}from"./firebase-vendor-Cr1os6Vr.js";import"./pdf-vendor-BoEiDn9A.js";import"./router-vendor-EW88JuZe.js";const ze=["Kurikulum","Kesiswaan","Sarpras","BK","Umum"],xe=()=>({Kurikulum:"",Kesiswaan:"",Sarpras:"",BK:"",Umum:""}),ue=["Hadir","Terlambat"],Fe=["Hadir","Digantikan"],he=r=>{const d=r.getTimezoneOffset()*6e4;return new Date(r.getTime()-d).toISOString().split("T")[0]},_e=r=>{const d=new Date(r);d.setHours(12,0,0,0);const h=d.getDay();return h===6&&d.setDate(d.getDate()-1),h===0&&d.setDate(d.getDate()-2),d},pe=r=>r.toLocaleDateString("id-ID",{weekday:"long",day:"numeric",month:"long",year:"numeric"}),Ge=r=>r.toLocaleDateString("id-ID",{day:"numeric",month:"short",year:"numeric"}),v=r=>r===null?"--":`${r}%`,be=r=>r.trim().toLowerCase(),qe=r=>(r||"").replace(/[^0-9]/g,""),Ve=(r,d,h)=>{const f=qe(r);if(!f)return"";const b=encodeURIComponent(`Assalamu'alaikum ${h||"Wali Kelas"}, ini laporan cepat untuk kelas ${d||""}.`);return`https://wa.me/${f}?text=${b}`},fe=r=>r.getDay()===5?[{label:"Jam ke-1",start:"07:00",end:"07:25"},{label:"Jam ke-2",start:"07:25",end:"07:50"},{label:"Jam ke-3",start:"07:50",end:"08:15"},{label:"Jam ke-4",start:"08:15",end:"08:40"},{label:"Jam ke-5",start:"08:40",end:"09:05"},{label:"Istirahat",start:"09:05",end:"09:35"},{label:"Jam ke-6",start:"09:35",end:"10:00"},{label:"Jam ke-7",start:"10:00",end:"10:25"},{label:"Jam ke-8",start:"10:25",end:"10:50"},{label:"Jam ke-9",start:"10:50",end:"11:15"}]:[{label:"Jam ke-1",start:"07:00",end:"07:45"},{label:"Jam ke-2",start:"07:45",end:"08:30"},{label:"Jam ke-3",start:"08:30",end:"09:15"},{label:"Jam ke-4",start:"09:15",end:"10:00"},{label:"Istirahat Pertama",start:"10:00",end:"10:15"},{label:"Jam ke-5",start:"10:15",end:"11:00"},{label:"Jam ke-6",start:"11:00",end:"11:45"},{label:"Jam ke-7",start:"11:45",end:"12:30"},{label:"Istirahat Kedua",start:"12:30",end:"13:00"},{label:"Jam ke-8",start:"13:00",end:"13:45"},{label:"Jam ke-9",start:"13:45",end:"14:30"},{label:"Jam ke-10",start:"14:30",end:"15:15"}],ke=r=>fe(r).filter(d=>d.label.startsWith("Jam")),Qe=r=>{const d=ke(r),h=r.getHours()*60+r.getMinutes();return d.findIndex(f=>{const[b,N]=f.start.split(":").map(Number),[k,w]=f.end.split(":").map(Number);return h>=b*60+N&&h<k*60+w})},Ye=r=>{const d=r.getDay();if(d===0||d===6)return{label:"Sekolah Libur",range:"OFFLINE",startMinutes:0,isBreak:!1};const h=fe(r),f=r.getHours()*60+r.getMinutes();for(const b of h){const[N,k]=b.start.split(":").map(Number),[w,y]=b.end.split(":").map(Number);if(f>=N*60+k&&f<w*60+y)return{label:b.label,range:`${b.start} - ${b.end}`,startMinutes:N*60+k,isBreak:b.label.toLowerCase().includes("istirahat")}}return{label:"Diluar Sesi",range:"--:--",startMinutes:0,isBreak:!1}},Ze=(r,d)=>{const h=ke(d);let f=r.startTime,b=r.endTime;r.startPeriodIdx!==void 0&&h[r.startPeriodIdx]&&(f=h[r.startPeriodIdx].start),r.endPeriodIdx!==void 0&&h[r.endPeriodIdx]&&(b=h[r.endPeriodIdx].end);const[N,k]=f.split(":").map(Number),[w,y]=b.split(":").map(Number),H=d.getHours()*3600+d.getMinutes()*60+d.getSeconds(),D=N*3600+k*60,J=w*3600+y*60,u=Math.max(1,J-D),R=J-H;return{percentage:Math.min(100,Math.max(0,(H-D)/u*100)),remainingMinutes:R>0?Math.ceil(R/60):1}},ge=({label:r,percentage:d,description:h,barClass:f})=>{const b=d===null?0:Math.max(0,Math.min(100,d));return e.jsxs("div",{className:"rounded-[1.6rem] border border-slate-100 bg-slate-50/70 p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-slate-400",children:r}),e.jsx("p",{className:"mt-2 text-2xl font-black text-slate-800",children:v(d)})]}),e.jsx("div",{className:"h-14 w-14 rounded-2xl border border-white bg-white shadow-sm flex items-center justify-center text-xs font-black text-slate-500",children:v(d)})]}),e.jsx("div",{className:"mt-4 h-2.5 overflow-hidden rounded-full bg-white shadow-inner",children:e.jsx("div",{className:`h-full rounded-full ${f}`,style:{width:`${b}%`}})}),e.jsx("p",{className:"mt-3 text-xs font-semibold leading-relaxed text-slate-500",children:h})]})},it=()=>{const[r,d]=i.useState([]),[h,f]=i.useState([]),[b,N]=i.useState([]),[k,w]=i.useState([]),[y,H]=i.useState([]),[D,J]=i.useState([]),[u,R]=i.useState(new Date),[T,U]=i.useState(""),[G,q]=i.useState(""),[Ne,V]=i.useState(24),[je,Q]=i.useState(!0),[ve,Y]=i.useState("Besar"),[we,Z]=i.useState(xe());i.useEffect(()=>{const t=setInterval(()=>R(new Date),1e3);return()=>clearInterval(t)},[]);const A=i.useMemo(()=>he(u),[u]),S=i.useMemo(()=>_e(u),[u]),K=i.useMemo(()=>he(S),[S]),P=i.useMemo(()=>Qe(u),[u]),I=i.useMemo(()=>Ye(u),[u]),O=i.useMemo(()=>pe(S),[S]),Se=i.useMemo(()=>pe(u),[u]);i.useEffect(()=>{const t=j(Ue,o=>{d(Xe(o.docs.map(l=>({id:l.id,...l.data()}))))}),a=j(Oe,o=>{f(o.docs.map(l=>({id:l.id,...l.data()})))}),s=j(me(oe,"settings","dashboard_ticker"),o=>{if(o.exists()){const l=o.data();q(l.isActive===!1?"":(l.text||"").trim()),V(typeof l.speedSeconds=="number"?Math.min(120,Math.max(0,l.speedSeconds)):24),Q(l.pauseOnHover!==!1),Y(l.fontSize==="Kecil"||l.fontSize==="Sedang"||l.fontSize==="Besar"?l.fontSize:"Besar")}else q(""),V(24),Q(!0),Y("Besar")}),n=j(me(oe,"settings","dashboard_board"),o=>{if(o.exists()){const l=o.data();Z({Kurikulum:typeof l.Kurikulum=="string"?l.Kurikulum:"",Kesiswaan:typeof l.Kesiswaan=="string"?l.Kesiswaan:"",Sarpras:typeof l.Sarpras=="string"?l.Sarpras:"",BK:typeof l.BK=="string"?l.BK:"",Umum:typeof l.Umum=="string"?l.Umum:""})}else Z(xe())});return()=>{t(),a(),s(),n()}},[]),i.useEffect(()=>{const t=j($(ce,W("date","==",A)),a=>{N(a.docs.map(s=>({id:s.id,...s.data()})))});return()=>t()},[A]),i.useEffect(()=>{const t=j($(ce,W("date","==",K)),n=>{w(n.docs.map(o=>({id:o.id,...o.data()})))}),a=j($($e,W("date","==",K)),n=>{H(n.docs.map(o=>({id:o.id,...o.data()})))}),s=j($(We,W("date","==",K)),n=>{J(n.docs.map(o=>({id:o.id,...o.data()})))});return()=>{t(),a(),s()}},[K]);const M=u.getDay()===0||u.getDay()===6,B=!M&&u.getHours()>=16,E=I.isBreak,Pe=K!==A,Ie=t=>{const a=u.getHours()*60+u.getMinutes();return b.find(s=>{if(s.classId!==t||s.date!==A)return!1;if(P!==-1&&s.startPeriodIdx!==void 0&&s.endPeriodIdx!==void 0&&P>=s.startPeriodIdx&&P<=s.endPeriodIdx)return!0;if(s.startTime&&s.endTime){const[n,o]=s.startTime.split(":").map(Number),[l,C]=s.endTime.split(":").map(Number);return a>=n*60+o&&a<l*60+C+1}return!1})||null},Ce=t=>{const a=u.getDay();return a<1||a>5||P===-1?null:h.find(s=>s.classId===t&&s.day===a&&P>=s.startPeriodIdx&&P<=s.endPeriodIdx)||null},ee=i.useMemo(()=>{const t={};return y.forEach(a=>{t[a.classId]=a}),t},[y]),te=i.useMemo(()=>{const t={};return D.forEach(a=>{t[a.scheduleId]=a}),t},[D]),ae=i.useMemo(()=>{const t={},a=S.getDay();return h.filter(s=>s.day===a).forEach(s=>{t[s.classId]||(t[s.classId]=[]),t[s.classId].push(s)}),Object.values(t).forEach(s=>{s.sort((n,o)=>n.startPeriodIdx-o.startPeriodIdx||n.className.localeCompare(o.className))}),t},[h,S]),ye=t=>k.find(a=>{if(a.classId!==t.classId)return!1;const s=t.teacherId?a.teacherId===t.teacherId:be(a.teacherName)===be(t.teacherName),n=a.startPeriodIdx<=t.endPeriodIdx&&a.endPeriodIdx>=t.startPeriodIdx;return s&&n})||null,Te=t=>k.find(a=>a.classId!==t.classId?!1:a.startPeriodIdx<=t.endPeriodIdx&&a.endPeriodIdx>=t.startPeriodIdx)||null,Me=t=>{const a=te[t.id];return a!=null&&a.status?a.status:ye(t)?"Hadir":Te(t)?"Digantikan":"Belum Dicek"},p=i.useMemo(()=>[...r].sort((a,s)=>a.name.localeCompare(s.name)).map(a=>{const s=M||B||E?null:Ie(a.id),n=M||B||E?null:Ce(a.id),o=s?Ze(s,u):null,l=!!(s!=null&&s.isInfal||s&&n&&s.teacherName!==n.teacherName),C=u.getHours()*60+u.getMinutes(),m=!!(n&&!s&&I.label.startsWith("Jam")&&C-I.startMinutes>15),x=ee[a.id],z=a.students.map(g=>{var ie,de;return((ie=x==null?void 0:x.waliOverrides)==null?void 0:ie[g.id])||((de=x==null?void 0:x.attendance)==null?void 0:de[g.id])||null}).filter(g=>g!==null),F=a.students.length,se=z.filter(g=>ue.includes(g)).length,Ke=z.filter(g=>g==="Terlambat").length,Be=z.filter(g=>!ue.includes(g)).length,Ee=x&&F>0?Math.round(se/F*100):null,re=ae[a.id]||[],_=re.map(g=>Me(g)),L=re.length,ne=_.filter(g=>g==="Hadir").length,le=_.filter(g=>Fe.includes(g)).length,Le=_.filter(g=>g==="Belum Dicek").length,He=L>0?Math.round(ne/L*100):null,Je=L>0?Math.round(le/L*100):null;return{classroom:a,waliName:a.waliKelasTeacherName||"Belum ditetapkan",waliPhone:a.waliKelasPhone||"",liveSession:s,livePlanned:n,liveProgress:o,isInfal:l,isLateThreshold:m,studentTotal:F,studentPresentCount:se,studentLateCount:Ke,studentAbsentCount:Be,studentPercentage:Ee,studentAttendanceFilled:!!x,studentNote:(x==null?void 0:x.piketNote)||(x==null?void 0:x.waliClassNote)||"",teacherTotal:L,teacherPresentCount:ne,teacherCoveredCount:le,teacherPendingCount:Le,teacherPercentage:He,teacherCoveragePercentage:Je}}),[r,I.label,I.startMinutes,u,B,E,M,ae,ee,te,b,k,h,A,P]);i.useEffect(()=>{if(!p.length){U("");return}(!T||!p.some(t=>t.classroom.id===T))&&U(p[0].classroom.id)},[p,T]);const De=i.useMemo(()=>({X:p.filter(t=>t.classroom.name.trim().toUpperCase().startsWith("X ")||t.classroom.name.trim().toUpperCase().startsWith("X-")||/^X(?!I|II)/i.test(t.classroom.name.trim())),XI:p.filter(t=>t.classroom.name.trim().toUpperCase().startsWith("XI ")||t.classroom.name.trim().toUpperCase().startsWith("XI-")),XII:p.filter(t=>t.classroom.name.trim().toUpperCase().startsWith("XII ")||t.classroom.name.trim().toUpperCase().startsWith("XII-"))}),[p]),c=i.useMemo(()=>p.find(t=>t.classroom.id===T)||null,[p,T]),Ae=i.useMemo(()=>{let t=0,a=0;return p.forEach(s=>{s.liveSession?t+=1:s.livePlanned&&(a+=1)}),{totalClasses:r.length,occupied:t,waiting:a,empty:Math.max(0,r.length-t-a)}},[p,r.length]),X=i.useMemo(()=>{const t=p.map(m=>m.studentPercentage).filter(m=>m!==null),a=p.map(m=>m.teacherPercentage).filter(m=>m!==null),s=p.map(m=>m.teacherCoveragePercentage).filter(m=>m!==null),n=p.reduce((m,x)=>m+x.teacherTotal,0),o=p.reduce((m,x)=>m+(x.teacherTotal-x.teacherPendingCount),0),l=p.filter(m=>m.studentAttendanceFilled).length,C=p.filter(m=>m.isLateThreshold).length;return{studentAverage:t.length?Math.round(t.reduce((m,x)=>m+x,0)/t.length):null,teacherAverage:a.length?Math.round(a.reduce((m,x)=>m+x,0)/a.length):null,teacherCoverageAverage:s.length?Math.round(s.reduce((m,x)=>m+x,0)/s.length):null,filledStudentClasses:l,totalTeacherSlots:n,checkedTeacherSlots:o,alertClasses:C}},[p]);return e.jsxs("div",{className:"space-y-6 animate-fade-in pb-12",children:[e.jsxs("div",{className:`relative overflow-hidden rounded-[2.2rem] border p-6 text-white shadow-2xl transition-all duration-700 ${E?"border-slate-600 bg-slate-700":M||B?"border-slate-800 bg-slate-950":"border-slate-800 bg-slate-900"}`,children:[e.jsx("div",{className:"absolute -left-10 -top-10 h-56 w-56 rounded-full bg-blue-500/20 blur-[90px]"}),e.jsx("div",{className:"absolute right-0 top-0 h-56 w-56 rounded-full bg-cyan-400/10 blur-[100px]"}),e.jsxs("div",{className:"relative z-10 grid grid-cols-1 xl:grid-cols-12 gap-6 items-start",children:[e.jsxs("div",{className:"xl:col-span-8 space-y-3",children:[G?e.jsxs("div",{className:"rounded-[1.7rem] border border-amber-300/40 bg-gradient-to-r from-amber-500/20 via-orange-400/10 to-amber-500/20 px-0 py-0 shadow-lg backdrop-blur-sm",children:[e.jsxs("div",{className:"flex items-center gap-3 border-b border-white/10 px-4 py-3",children:[e.jsx("span",{className:"shrink-0 rounded-full bg-amber-300 px-3 py-1 text-[10px] font-black uppercase tracking-[0.28em] text-slate-950",children:"Running Text"}),e.jsx("p",{className:"text-xs font-black italic tracking-[0.18em] text-amber-100",children:"Pengumuman Admin Utama"})]}),e.jsx(Re,{text:G,speedSeconds:Ne,pauseOnHover:je,fontSize:ve,ariaLabel:"Running text dashboard"})]}):null,e.jsx("div",{className:"inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-4 py-2 text-[10px] font-black uppercase tracking-[0.3em] text-blue-200",children:"Real-Time Dashboard Selaras"}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl md:text-4xl font-black tracking-tight leading-none",children:"MONITORING KELAS AKTIF DAN REKAP KEHADIRAN"}),e.jsx("p",{className:"mt-3 max-w-3xl text-sm md:text-base font-medium leading-relaxed text-slate-300",children:"Monitor kelas yang sedang berjalan secara real-time sesuai jadwal."})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3 pt-2",children:[e.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/10 px-4 py-3",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-slate-300",children:"Waktu Saat Ini"}),e.jsx("p",{className:"mt-1 text-2xl font-black text-white",children:u.toLocaleTimeString("id-ID",{hour:"2-digit",minute:"2-digit"})})]}),e.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-slate-300",children:"Status Sesi"}),e.jsx("p",{className:"mt-1 text-lg font-black text-white",children:I.label}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:I.range})]}),e.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-slate-300",children:"Rekap Hari Aktif"}),e.jsx("p",{className:"mt-1 text-lg font-black text-blue-200",children:Ge(S)}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:O})]})]})]}),e.jsxs("div",{className:"xl:col-span-4 space-y-4",children:[e.jsxs("div",{className:"overflow-hidden rounded-[1.9rem] border border-white/10 bg-white/10 backdrop-blur-md",children:[e.jsxs("div",{className:"grid grid-cols-[110px_1fr] border-b border-white/10 bg-white/10 px-4 py-3 text-[10px] font-black uppercase tracking-[0.22em] text-slate-200",children:[e.jsx("span",{children:"Kategori"}),e.jsx("span",{children:"Papan Pengumuman"})]}),ze.map(t=>e.jsxs("div",{className:"grid grid-cols-[110px_1fr] gap-0 border-b border-white/5 px-4 py-3 text-sm last:border-b-0",children:[e.jsx("div",{className:"pr-3 font-black text-emerald-200",children:t}),e.jsx("div",{className:"text-slate-100/90 leading-relaxed",children:(we[t]||"").trim()||"Belum ada pengumuman."})]},t))]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"rounded-[1.7rem] border border-white/10 bg-white/10 p-4 backdrop-blur-md",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-green-300",children:"Kelas Aktif"}),e.jsx("p",{className:"mt-2 text-3xl font-black text-white",children:Ae.occupied}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:"sedang menjalankan KBM saat ini"})]}),e.jsxs("div",{className:"rounded-[1.7rem] border border-white/10 bg-white/10 p-4 backdrop-blur-md",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-blue-300",children:"Siswa Hadir"}),e.jsx("p",{className:"mt-2 text-3xl font-black text-white",children:v(X.studentAverage)}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:"rata-rata kehadiran per kelas"})]}),e.jsxs("div",{className:"rounded-[1.7rem] border border-white/10 bg-white/10 p-4 backdrop-blur-md",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-amber-300",children:"Guru Hadir"}),e.jsx("p",{className:"mt-2 text-3xl font-black text-white",children:v(X.teacherAverage)}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:"persentase hadir sesuai jadwal kelas"})]}),e.jsxs("div",{className:"rounded-[1.7rem] border border-white/10 bg-white/10 p-4 backdrop-blur-md",children:[e.jsx("p",{className:"text-[9px] font-black uppercase tracking-[0.25em] text-cyan-300",children:"Cakupan KBM"}),e.jsx("p",{className:"mt-2 text-3xl font-black text-white",children:v(X.teacherCoverageAverage)}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:"kelas tetap terlayani meski ada pengganti"})]})]})]})]})]}),Pe&&e.jsx("div",{className:"rounded-[1.8rem] border border-blue-100 bg-blue-50 px-5 py-4 shadow-sm",children:e.jsxs("p",{className:"text-sm font-bold text-blue-800 leading-relaxed",children:["Hari ini adalah ",e.jsx("span",{className:"font-black",children:Se}),", jadi ringkasan kehadiran menampilkan data dari hari sekolah aktif terakhir yaitu ",e.jsx("span",{className:"font-black",children:O}),"."]})}),e.jsxs("div",{className:"flex flex-col md:flex-row md:items-end md:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.28em] text-slate-400",children:"Ringkasan Per Kelas"}),e.jsx("h2",{className:"mt-2 text-2xl font-black tracking-tight text-slate-800",children:"Persentase kehadiran siswa dan guru untuk setiap kelas"})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-100 bg-white px-4 py-3 shadow-sm",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.25em] text-slate-400",children:"Rekap Dipakai"}),e.jsx("p",{className:"mt-1 text-sm font-black text-blue-600",children:O})]})]}),e.jsx("div",{className:"space-y-8",children:[["X","Kelas X"],["XI","Kelas XI"],["XII","Kelas XII"]].map(([t,a])=>{const s=De[t];return s.length?e.jsxs("section",{className:"rounded-[2.2rem] border border-slate-100 bg-white p-5 shadow-sm",children:[e.jsxs("div",{className:"mb-5 flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.25em] text-slate-400",children:"Pemantauan Menyeluruh"}),e.jsx("h3",{className:"mt-2 text-2xl font-black tracking-tight text-slate-800",children:a})]}),e.jsx("div",{className:"rounded-2xl border border-slate-100 bg-slate-50 px-4 py-3 text-xs font-bold text-slate-500",children:"Klik kartu kelas untuk detail"})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-6 gap-4",children:s.map(n=>{const o=E?{text:"Istirahat",cls:"bg-slate-100 text-slate-600 border-slate-200"}:n.liveSession?n.isInfal?{text:"Pengganti",cls:"bg-purple-100 text-purple-700 border-purple-200"}:{text:"Sedang KBM",cls:"bg-green-100 text-green-700 border-green-200"}:n.livePlanned?n.isLateThreshold?{text:"Belum Lapor",cls:"bg-red-100 text-red-700 border-red-200"}:{text:"Jadwal Masuk",cls:"bg-amber-100 text-amber-700 border-amber-200"}:M||B?{text:"Offline",cls:"bg-slate-100 text-slate-500 border-slate-200"}:{text:"Tidak Ada Jadwal",cls:"bg-slate-100 text-slate-500 border-slate-200"},l=Ve(n.waliPhone,n.classroom.name,n.waliName),C=T===n.classroom.id;return e.jsxs("button",{type:"button",onClick:()=>U(n.classroom.id),className:`text-left rounded-[2rem] border p-4 shadow-sm transition-all ${n.liveSession?"border-emerald-200 bg-emerald-50/70":"border-rose-200 bg-rose-50/70"} ${C?"ring-2 ring-blue-300 shadow-lg":"hover:shadow-md"}`,children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-slate-400",children:"Kelas"}),e.jsx("h4",{className:"mt-1 text-xl font-black text-slate-800",children:n.classroom.name})]}),e.jsx("span",{className:`inline-flex items-center rounded-xl border px-2.5 py-1.5 text-[9px] font-black uppercase tracking-[0.2em] ${o.cls}`,children:o.text})]}),e.jsxs("div",{className:"mt-4 grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"rounded-2xl border border-white bg-white px-3 py-3",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.18em] text-slate-400",children:"Siswa"}),e.jsx("p",{className:"mt-2 text-2xl font-black text-blue-600",children:v(n.studentPercentage)})]}),e.jsxs("div",{className:"rounded-2xl border border-white bg-white px-3 py-3",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.18em] text-slate-400",children:"Guru"}),e.jsx("p",{className:"mt-2 text-2xl font-black text-emerald-600",children:v(n.teacherPercentage)})]})]}),e.jsxs("div",{className:"mt-4 rounded-2xl bg-white/80 border border-white px-3 py-3",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.18em] text-slate-400",children:"Guru Aktif"}),e.jsx("p",{className:`mt-2 text-sm font-black ${n.liveSession?"text-emerald-700":n.livePlanned?"text-amber-700":"text-rose-700"}`,children:n.liveSession?n.liveSession.teacherName:n.livePlanned?n.livePlanned.teacherName:"Tidak ada guru aktif"})]}),e.jsxs("div",{className:"mt-4 rounded-2xl bg-white/80 border border-white px-3 py-3",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.18em] text-slate-400",children:"Wali Kelas"}),e.jsx("p",{className:"mt-2 text-sm font-black text-slate-700",children:n.waliName}),l?e.jsx("a",{href:l,target:"_blank",rel:"noreferrer",onClick:m=>m.stopPropagation(),className:"mt-3 inline-flex items-center rounded-xl bg-green-600 px-3 py-2 text-[10px] font-black uppercase tracking-widest text-white",children:"Chat WA"}):e.jsx("p",{className:"mt-2 text-[10px] font-bold uppercase tracking-widest text-slate-400",children:"WA belum diisi"})]})]},n.classroom.id)})})]},t):null})}),c&&e.jsxs("div",{className:"rounded-[2.4rem] border border-slate-100 bg-white p-6 shadow-xl",children:[e.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-start lg:justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.25em] text-slate-400",children:"Detail Kelas Dipilih"}),e.jsx("h3",{className:"mt-2 text-3xl font-black text-slate-800",children:c.classroom.name}),e.jsxs("p",{className:"mt-2 text-sm font-medium text-slate-500",children:["Wali kelas: ",e.jsx("span",{className:"font-black text-slate-700",children:c.waliName})]})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-100 bg-slate-50 px-4 py-3 text-sm font-bold text-slate-600",children:["Guru aktif: ",c.liveSession?c.liveSession.teacherName:c.livePlanned?c.livePlanned.teacherName:"Tidak ada guru aktif"]})]}),e.jsxs("div",{className:"mt-6 grid grid-cols-1 xl:grid-cols-2 gap-4",children:[e.jsx(ge,{label:"Kehadiran Siswa",percentage:c.studentPercentage,description:c.studentAttendanceFilled?`${c.studentPresentCount} dari ${c.studentTotal} siswa hadir. ${c.studentAbsentCount} siswa tercatat tidak hadir.`:"Belum ada input absensi siswa dari guru piket untuk kelas ini.",barClass:"bg-gradient-to-r from-blue-500 via-cyan-500 to-sky-500"}),e.jsx(ge,{label:"Kehadiran Guru",percentage:c.teacherPercentage,description:c.teacherTotal>0?`${c.teacherPresentCount} dari ${c.teacherTotal} slot guru hadir. Cakupan kelas ${v(c.teacherCoveragePercentage)}.`:"Tidak ada jadwal reguler pada hari aktif untuk kelas ini.",barClass:"bg-gradient-to-r from-emerald-500 via-green-500 to-lime-500"})]}),e.jsxs("div",{className:"mt-5 grid grid-cols-1 md:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-100 bg-slate-50 px-4 py-4",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-slate-400",children:"Detail Siswa"}),e.jsxs("p",{className:"mt-2 text-sm font-bold text-slate-700",children:["Hadir ",c.studentPresentCount," โข Terlambat ",c.studentLateCount," โข Tidak Hadir ",c.studentAbsentCount]})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-100 bg-slate-50 px-4 py-4",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-slate-400",children:"Detail Guru"}),e.jsxs("p",{className:"mt-2 text-sm font-bold text-slate-700",children:["Hadir ",c.teacherPresentCount," โข Diganti ",Math.max(0,c.teacherCoveredCount-c.teacherPresentCount)," โข Belum Dicek ",c.teacherPendingCount]})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-100 bg-slate-50 px-4 py-4",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-slate-400",children:"Kontak Wali"}),e.jsx("p",{className:"mt-2 text-sm font-bold text-slate-700",children:c.waliPhone||"Nomor WA belum tersedia"})]})]}),(c.studentNote||c.teacherPendingCount>0)&&e.jsxs("div",{className:"mt-5 rounded-[1.6rem] border border-amber-100 bg-amber-50 px-4 py-4",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-amber-700",children:"Catatan Cepat"}),e.jsxs("div",{className:"mt-2 space-y-2 text-sm font-medium leading-relaxed text-amber-900",children:[c.studentNote&&e.jsx("p",{children:c.studentNote}),c.teacherPendingCount>0&&e.jsxs("p",{children:[c.teacherPendingCount," slot guru untuk kelas ini masih berstatus belum dicek."]})]})]})]})]})};export{it as default};
Save
๐งช PHP Preview
<?php echo 'hello'; ?>
Run PHP
๐ฅ Linux CMD
Run CMD