๐ 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 c,j as e}from"./react-vendor-Cdu9POhR.js";import{R as Ce,r as Ie}from"./usageMonitoring-Cy9wN31H.js";import{b as ye,d as _,j as Me,s as Te,n as De}from"./index-Cv4HPzFZ.js";import{r as Ae}from"./attendanceDailySummary-CI3kC1cf.js";import{o as G,e as F,q as Ke,w as Be,j as le,h as q}from"./firebase-vendor-CChqQX8m.js";import"./pdf-vendor-BoEiDn9A.js";import"./router-vendor-EW88JuZe.js";const Le=["Kurikulum","Kesiswaan","Sarpras","BK","Umum"],ne=()=>({Kurikulum:"",Kesiswaan:"",Sarpras:"",BK:"",Umum:""}),V=s=>{const n=s.getTimezoneOffset()*6e4;return new Date(s.getTime()-n).toISOString().split("T")[0]},de=s=>{const n=new Date(s);n.setHours(12,0,0,0);const d=n.getDay();return d===6&&n.setDate(n.getDate()-1),d===0&&n.setDate(n.getDate()-2),n},ie=s=>s.toLocaleDateString("id-ID",{weekday:"long",day:"numeric",month:"long",year:"numeric"}),P=s=>s===null?"--":`${s}%`,Ee=s=>(s||"").replace(/[^0-9]/g,""),Je=(s,n,d)=>{const o=Ee(s);if(!o)return"";const h=encodeURIComponent(`Assalamu'alaikum ${d||"Wali Kelas"}, ini laporan cepat untuk kelas ${n||""}.`);return`https://wa.me/${o}?text=${h}`},E=[{idx:0,label:"Jam ke-1",start:"07:00",end:"07:45"},{idx:1,label:"Jam ke-2",start:"07:45",end:"08:30"},{idx:2,label:"Jam ke-3",start:"08:30",end:"09:15"},{idx:3,label:"Jam ke-4",start:"09:15",end:"10:00"},{idx:4,label:"Jam ke-5",start:"10:15",end:"11:00"},{idx:5,label:"Jam ke-6",start:"11:00",end:"11:45"},{idx:6,label:"Jam ke-7",start:"11:45",end:"12:30"},{idx:7,label:"Jam ke-8",start:"13:00",end:"13:45"},{idx:8,label:"Jam ke-9",start:"13:45",end:"14:30"},{idx:9,label:"Jam ke-10",start:"14:30",end:"15:15"}],Y=[{idx:0,label:"Jam ke-1",start:"07:00",end:"07:25"},{idx:1,label:"Jam ke-2",start:"07:25",end:"07:50"},{idx:2,label:"Jam ke-3",start:"07:50",end:"08:15"},{idx:3,label:"Jam ke-4",start:"08:15",end:"08:40"},{idx:4,label:"Jam ke-5",start:"08:40",end:"09:05"},{idx:5,label:"Jam ke-6",start:"09:35",end:"10:00"},{idx:6,label:"Jam ke-7",start:"10:00",end:"10:25"},{idx:7,label:"Jam ke-8",start:"10:25",end:"10:50"},{idx:8,label:"Jam ke-9",start:"10:50",end:"11:15"}],$e=(s,n)=>Array.isArray(s)&&s.length?s.map((d,o)=>{var h,f,i;return{idx:typeof(d==null?void 0:d.idx)=="number"?d.idx:o,label:String((d==null?void 0:d.label)||((h=n[o])==null?void 0:h.label)||`Jam ke-${o+1}`),start:String((d==null?void 0:d.start)||((f=n[o])==null?void 0:f.start)||""),end:String((d==null?void 0:d.end)||((i=n[o])==null?void 0:i.end)||"")}}).sort((d,o)=>d.idx-o.idx):n,He=(s,n)=>n==="special"?"special":s.getDay()===5?"friday":"regular",oe=(s,n,d)=>{var h;const o=He(s,d);return(h=n[o])!=null&&h.length?n[o]:o==="friday"?Y:E},xe=(s,n,d)=>{const o=oe(s,n,d);return s.getDay()===5?[...o.slice(0,5),{label:"Istirahat",start:"09:05",end:"09:35"},...o.slice(5)]:[...o.slice(0,4),{label:"Istirahat Pertama",start:"10:00",end:"10:15"},...o.slice(4,7),{label:"Istirahat Kedua",start:"12:30",end:"13:00"},...o.slice(7)]},ue=(s,n,d)=>xe(s,n,d).filter(o=>o.label.startsWith("Jam")),We=(s,n,d)=>{const o=ue(s,n,d),h=s.getHours()*60+s.getMinutes();return o.findIndex(f=>{const[i,v]=f.start.split(":").map(Number),[C,I]=f.end.split(":").map(Number);return h>=i*60+v&&h<C*60+I})},_e=(s,n,d)=>{const o=s.getDay();if(o===0||o===6)return{label:"Sekolah Libur",range:"OFFLINE",startMinutes:0,isBreak:!1};const h=xe(s,n,d),f=s.getHours()*60+s.getMinutes();for(const i of h){const[v,C]=i.start.split(":").map(Number),[I,u]=i.end.split(":").map(Number);if(f>=v*60+C&&f<I*60+u)return{label:i.label,range:`${i.start} - ${i.end}`,startMinutes:v*60+C,isBreak:i.label.toLowerCase().includes("istirahat")}}return{label:"Diluar Sesi",range:"--:--",startMinutes:0,isBreak:!1}},Fe=(s,n,d,o)=>{const h=ue(n,d,o);let f=s.startTime,i=s.endTime;s.startPeriodIdx!==void 0&&h[s.startPeriodIdx]&&(f=h[s.startPeriodIdx].start),s.endPeriodIdx!==void 0&&h[s.endPeriodIdx]&&(i=h[s.endPeriodIdx].end);const[v,C]=f.split(":").map(Number),[I,u]=i.split(":").map(Number),R=n.getHours()*3600+n.getMinutes()*60+n.getSeconds(),w=v*3600+C*60,T=I*3600+u*60,U=Math.max(1,T-w),J=T-R;return{percentage:Math.min(100,Math.max(0,(R-w)/U*100)),remainingMinutes:J>0?Math.ceil(J/60):1}},ce=({label:s,percentage:n,description:d,barClass:o})=>{const h=n===null?0:Math.max(0,Math.min(100,n));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:s}),e.jsx("p",{className:"mt-2 text-2xl font-black text-slate-800",children:P(n)})]}),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:P(n)})]}),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 ${o}`,style:{width:`${h}%`}})}),e.jsx("p",{className:"mt-3 text-xs font-semibold leading-relaxed text-slate-500",children:d})]})},Ve=()=>{const[s,n]=c.useState([]),[d,o]=c.useState([]),[h,f]=c.useState([]),[i,v]=c.useState(null),[C,I]=c.useState(null),[u,R]=c.useState(new Date),[w,T]=c.useState(""),[U,J]=c.useState(""),[me,Q]=c.useState(24),[he,Z]=c.useState(!0),[pe,ee]=c.useState("Besar"),[be,te]=c.useState(ne()),[ge,ae]=c.useState(!0),[D,fe]=c.useState({regular:E,friday:Y,special:E}),[A,ke]=c.useState("regular");c.useEffect(()=>{const r=setInterval(()=>R(new Date),1e3);return()=>clearInterval(r)},[]),c.useEffect(()=>{const r=V(de(u)),m=G(F(_,"firebase_monitoring_daily",r),a=>{if(a.exists()){I({id:a.id,...a.data()});return}Ie(r).catch(l=>console.error("Gagal membangun firebase_monitoring_daily:",l))});return()=>m()},[u]);const $=c.useMemo(()=>V(u),[u]),K=c.useMemo(()=>de(u),[u]),O=c.useMemo(()=>V(K),[K]),y=c.useMemo(()=>We(u,D,A),[u,D,A]),M=c.useMemo(()=>_e(u,D,A),[u,D,A]),se=c.useMemo(()=>ie(K),[K]),Ne=c.useMemo(()=>ie(u),[u]),B=c.useMemo(()=>oe(u,D,A)[0]||E[0],[u,D,A]);c.useEffect(()=>{let r=!1;return(async()=>{try{const[a,l,b,k,N]=await Promise.all([le(Me),le(Te),q(F(_,"settings","dashboard_ticker")),q(F(_,"settings","dashboard_board")),q(F(_,"settings","schedule_periods"))]);if(r)return;if(n(De(a.docs.map(t=>({id:t.id,...t.data()})))),o(l.docs.map(t=>({id:t.id,...t.data()}))),b.exists()){const t=b.data();J(t.isActive===!1?"":(t.text||"").trim()),Q(typeof t.speedSeconds=="number"?Math.min(120,Math.max(0,t.speedSeconds)):24),Z(t.pauseOnHover!==!1),ee(t.fontSize==="Kecil"||t.fontSize==="Sedang"||t.fontSize==="Besar"?t.fontSize:"Besar")}else J(""),Q(24),Z(!0),ee("Besar");if(k.exists()){const t=k.data();te({Kurikulum:typeof t.Kurikulum=="string"?t.Kurikulum:"",Kesiswaan:typeof t.Kesiswaan=="string"?t.Kesiswaan:"",Sarpras:typeof t.Sarpras=="string"?t.Sarpras:"",BK:typeof t.BK=="string"?t.BK:"",Umum:typeof t.Umum=="string"?t.Umum:""}),ae(t.isActive!==!1)}else te(ne()),ae(!0);const j=(t,S)=>$e(t,S),p=N.exists()?N.data()||{}:{};fe({regular:j((p==null?void 0:p.regular)||(p==null?void 0:p.periods),E),friday:j(p==null?void 0:p.friday,Y),special:j(p==null?void 0:p.special,E)}),ke((p==null?void 0:p.activeMode)==="special"?"special":"regular")}catch(a){console.error("Gagal memuat data dashboard utama:",a)}})(),()=>{r=!0}},[]),c.useEffect(()=>{const r=G(Ke(ye,Be("date","==",$)),m=>{f(m.docs.map(a=>({id:a.id,...a.data()})))});return()=>r()},[$]),c.useEffect(()=>{let r=!1;const m=G(F(_,"attendance_daily_summary",O),a=>{a.exists()?v({id:a.id,...a.data()}):(v(null),Ae(O).catch(l=>{r||console.error("Gagal membangun attendance_daily_summary:",l)}))});return()=>{r=!0,m()}},[O]);const L=u.getDay()===0||u.getDay()===6,H=!L&&u.getHours()>=16,W=M.isBreak,je=O!==$,ve=r=>{const m=u.getHours()*60+u.getMinutes();return h.find(a=>{if(a.classId!==r||a.date!==$)return!1;if(y!==-1&&a.startPeriodIdx!==void 0&&a.endPeriodIdx!==void 0&&y>=a.startPeriodIdx&&y<=a.endPeriodIdx)return!0;if(a.startTime&&a.endTime){const[l,b]=a.startTime.split(":").map(Number),[k,N]=a.endTime.split(":").map(Number);return m>=l*60+b&&m<k*60+N+1}return!1})||null},we=r=>{const m=u.getDay();return m<1||m>5||y===-1?null:d.find(a=>a.classId===r&&a.day===m&&y>=a.startPeriodIdx&&y<=a.endPeriodIdx)||null},re=c.useMemo(()=>{const r={},m=K.getDay();return d.filter(a=>a.day===m).forEach(a=>{r[a.classId]||(r[a.classId]=[]),r[a.classId].push(a)}),Object.values(r).forEach(a=>{a.sort((l,b)=>l.startPeriodIdx-b.startPeriodIdx||l.className.localeCompare(b.className))}),r},[d,K]),g=c.useMemo(()=>{const r=[...s].sort((a,l)=>a.name.localeCompare(l.name)),m=(i==null?void 0:i.perClass)||{};return r.map(a=>{const l=L||H||W?null:ve(a.id),b=L||H||W?null:we(a.id),k=l?Fe(l,u):null,N=!!(l!=null&&l.isInfal||l&&b&&l.teacherName!==b.teacherName),j=u.getHours()*60+u.getMinutes(),p=!!(b&&!l&&M.label.startsWith("Jam")&&j-M.startMinutes>15),t=m[a.id];return{classroom:a,waliName:a.waliKelasTeacherName||"Belum ditetapkan",waliPhone:a.waliKelasPhone||"",liveSession:l,livePlanned:b,liveProgress:k,isInfal:N,isLateThreshold:p,studentTotal:(t==null?void 0:t.studentTotal)??a.students.length,studentPresentCount:(t==null?void 0:t.studentPresentCount)??0,studentLateCount:(t==null?void 0:t.studentLateCount)??0,studentAbsentCount:(t==null?void 0:t.studentAbsentCount)??0,studentPercentage:typeof(t==null?void 0:t.studentPercentage)=="number"?t.studentPercentage:null,studentAttendanceFilled:!!(t!=null&&t.studentAttendanceFilled),studentNote:(t==null?void 0:t.studentNote)||"",teacherTotal:(t==null?void 0:t.teacherTotal)??(re[a.id]||[]).length,teacherPresentCount:(t==null?void 0:t.teacherPresentCount)??0,teacherCoveredCount:(t==null?void 0:t.teacherCoveredCount)??0,teacherPendingCount:(t==null?void 0:t.teacherPendingCount)??0,teacherPercentage:typeof(t==null?void 0:t.teacherPercentage)=="number"?t.teacherPercentage:null,teacherCoveragePercentage:typeof(t==null?void 0:t.teacherCoveragePercentage)=="number"?t.teacherCoveragePercentage:null}})},[i,s,M.label,M.startMinutes,u,H,W,L,re,h,d,$,y]);c.useEffect(()=>{if(!g.length){T("");return}(!w||!g.some(r=>r.classroom.id===w))&&T(g[0].classroom.id)},[g,w]);const Se=c.useMemo(()=>({X:g.filter(r=>r.classroom.name.trim().toUpperCase().startsWith("X ")||r.classroom.name.trim().toUpperCase().startsWith("X-")||/^X(?!I|II)/i.test(r.classroom.name.trim())),XI:g.filter(r=>r.classroom.name.trim().toUpperCase().startsWith("XI ")||r.classroom.name.trim().toUpperCase().startsWith("XI-")),XII:g.filter(r=>r.classroom.name.trim().toUpperCase().startsWith("XII ")||r.classroom.name.trim().toUpperCase().startsWith("XII-"))}),[g]),x=c.useMemo(()=>g.find(r=>r.classroom.id===w)||null,[g,w]),Pe=c.useMemo(()=>{let r=0,m=0;return g.forEach(a=>{a.liveSession?r+=1:a.livePlanned&&(m+=1)}),{totalClasses:s.length,occupied:r,waiting:m,empty:Math.max(0,s.length-r-m)}},[g,s.length]),z=c.useMemo(()=>{var b,k,N,j,p,t;const r=g.reduce((S,X)=>S+X.teacherTotal,0),m=g.reduce((S,X)=>S+(X.teacherTotal-X.teacherPendingCount),0),a=g.filter(S=>S.studentAttendanceFilled).length,l=g.filter(S=>S.isLateThreshold).length;return{studentAverage:((b=i==null?void 0:i.student)==null?void 0:b.average)??null,teacherAverage:((k=i==null?void 0:i.teacher)==null?void 0:k.average)??null,teacherCoverageAverage:((N=i==null?void 0:i.teacher)==null?void 0:N.coverageAverage)??null,filledStudentClasses:((j=i==null?void 0:i.classVerification)==null?void 0:j.verified)??a,totalTeacherSlots:((p=i==null?void 0:i.teacher)==null?void 0:p.total)??r,checkedTeacherSlots:((t=i==null?void 0:i.teacher)==null?void 0:t.checked)??m,alertClasses:l}},[i,g]);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 ${W?"border-slate-600 bg-slate-700":L||H?"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:[U?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(Ce,{text:U,speedSeconds:me,pauseOnHover:he,fontSize:pe,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:M.label}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:M.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:"Mulai Sistem"}),e.jsx("p",{className:"mt-1 text-lg font-black text-blue-200",children:(B==null?void 0:B.start)||"--:--"}),e.jsxs("p",{className:"text-xs font-semibold text-slate-300",children:["Mengikuti ",(B==null?void 0:B.label)||"Jam ke-1"," pada pengaturan jadwal"]})]})]})]}),e.jsxs("div",{className:"xl:col-span-4 space-y-4",children:[ge?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"})]}),Le.map(r=>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:r}),e.jsx("div",{className:"text-slate-100/90 leading-relaxed",children:(be[r]||"").trim()||"Belum ada pengumuman."})]},r))]}):null,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:Pe.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:P(z.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:P(z.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:P(z.teacherCoverageAverage)}),e.jsx("p",{className:"text-xs font-semibold text-slate-300",children:"kelas tetap terlayani meski ada pengganti"})]})]})]})]})]}),je&&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:Ne}),", jadi ringkasan kehadiran menampilkan data dari hari sekolah aktif terakhir yaitu ",e.jsx("span",{className:"font-black",children:se}),"."]})}),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:se})]})]}),e.jsx("div",{className:"space-y-8",children:[["X","Kelas X"],["XI","Kelas XI"],["XII","Kelas XII"]].map(([r,m])=>{const a=Se[r];return a.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:m})]}),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:a.map(l=>{const b=W?{text:"Istirahat",cls:"bg-slate-100 text-slate-600 border-slate-200"}:l.liveSession?l.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"}:l.livePlanned?l.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"}:L||H?{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"},k=Je(l.waliPhone,l.classroom.name,l.waliName),N=w===l.classroom.id;return e.jsxs("button",{type:"button",onClick:()=>T(l.classroom.id),className:`text-left rounded-[2rem] border p-4 shadow-sm transition-all ${l.liveSession?"border-emerald-200 bg-emerald-50/70":"border-rose-200 bg-rose-50/70"} ${N?"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:l.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] ${b.cls}`,children:b.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:P(l.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:P(l.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 ${l.liveSession?"text-emerald-700":l.livePlanned?"text-amber-700":"text-rose-700"}`,children:l.liveSession?l.liveSession.teacherName:l.livePlanned?l.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:l.waliName}),k?e.jsx("a",{href:k,target:"_blank",rel:"noreferrer",onClick:j=>j.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"})]})]},l.classroom.id)})})]},r):null})}),x&&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:x.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:x.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: ",x.liveSession?x.liveSession.teacherName:x.livePlanned?x.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(ce,{label:"Kehadiran Siswa",percentage:x.studentPercentage,description:x.studentAttendanceFilled?`${x.studentPresentCount} dari ${x.studentTotal} siswa hadir. ${x.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(ce,{label:"Kehadiran Guru",percentage:x.teacherPercentage,description:x.teacherTotal>0?`${x.teacherPresentCount} dari ${x.teacherTotal} slot guru hadir. Cakupan kelas ${P(x.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 ",x.studentPresentCount," โข Terlambat ",x.studentLateCount," โข Tidak Hadir ",x.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 ",x.teacherPresentCount," โข Diganti ",Math.max(0,x.teacherCoveredCount-x.teacherPresentCount)," โข Belum Dicek ",x.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:x.waliPhone||"Nomor WA belum tersedia"})]})]}),(x.studentNote||x.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:[x.studentNote&&e.jsx("p",{children:x.studentNote}),x.teacherPendingCount>0&&e.jsxs("p",{children:[x.teacherPendingCount," slot guru untuk kelas ini masih berstatus belum dicek."]})]})]})]})]})};export{Ve as default};
Save
๐งช PHP Preview
<?php echo 'hello'; ?>
Run PHP
๐ฅ Linux CMD
Run CMD