1import{b as De,q as Ne,a as Ce,r as m,j as e}from"./vendor-react-wpXF2Dvf.js";import{b as Te,d as Pe,at as Le,bq as Re,br as N}from"./main-C1IJdISs.js";import{f as G}from"./timetableMapper-khBGPlBT.js";import{Y as r,a0 as _,P as Ye,T as Ie,ay as ze,L as g,H as U,ar as H,as as Q,at as X,au as Z,av as J,X as Ee,ap as ee,E as Fe,bi as Be,bb as te}from"./superschool-ui-ijQK0qhP.js";import{u as Oe,a as We,T as Ke}from"./useTimetableWeekSegments-6zAZALNU.js";import{F as C,H as Ve,I as l,aD as se,bx as ae,m as re,a3 as $e,r as qe}from"./superschool-sdk-B9p352qX.js";import{k as ne}from"./vendor-query-fYiNqPbw.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react-pdf-C3KUfZHm.js";import"./vendor-i18n-BUJziXlB.js";import"./vendor-radix-DCMKLCCS.js";import"./vendor-recharts-ecE23-P5.js";import"./vendor-tiptap-cyOKIKhB.js";function nt(){const[j,x]=De(),c=j.get("grade")??"1",a=j.get("klassId")?Number(j.get("klassId")):null,{currentSchool:h}=Te(),{allKlassGroupsUnique:T}=Pe(),{schoolYearList:ie}=Ne(),oe=Ce(),de=m.useMemo(()=>[...new Set(T.map(s=>s.grade))].filter(Boolean).sort((s,o)=>s-o),[T]),P=j.get("weekStart"),[d,S]=m.useState(()=>P?C(new Date(P),{weekStartsOn:1}):C(new Date,{weekStartsOn:1})),f=h!=null&&h.hasSaturdayClass?6:5,{segments:L,primarySegment:n,secondarySegment:i,contextStatus:R,slots:v,hasSemesterBoundary:le}=Oe(ie,d,f),[ce,me]=v,he=t=>{const s=l(t,"yyyy-MM-dd");return L.find(o=>o.dates.some(u=>l(u,"yyyy-MM-dd")===s))??null},Y=m.useMemo(()=>{const t=d.getFullYear(),s=Ve(d,{weekStartsOn:1});return{year:t,weekNumber:s}},[d]),ue=()=>{const t=$e(d,1);S(t),x({weekStart:l(t,"yyyy-MM-dd"),grade:c,...a&&{klassId:String(a)}})},ge=()=>{const t=qe(d,1);S(t),x({weekStart:l(t,"yyyy-MM-dd"),grade:c,...a&&{klassId:String(a)}})},I=t=>{const s=C(t,{weekStartsOn:1});S(s),x({weekStart:l(s,"yyyy-MM-dd"),grade:c,...a&&{klassId:String(a)}})},pe=(t,s,o,u)=>{var q;if(!a||!s.id)return;const y=he(o)??n;if(!y)return;const w=new URLSearchParams({schoolYear:String(y.schoolYear),semester:String(y.semester),date:l(o,"yyyy-MM-dd"),period:String(u),klassId:String(a),grade:c,...((q=t==null?void 0:t.teacher)==null?void 0:q.id)&&{teacherId:String(t.teacher.id)}});oe(`/admin/timetable/student/${s.id}?${w.toString()}`)},z=n!==null,{data:E=[],isLoading:xe}=Le({year:(n==null?void 0:n.schoolYear)??void 0}),p=m.useMemo(()=>E.filter(t=>t.grade===Number(c)).sort((t,s)=>t.klass-s.klass).map(t=>({id:t.id,name:t.name??`${t.grade}-${t.klass}`,grade:t.grade,klass:t.klass})),[E,c]);m.useEffect(()=>{p.length>0&&!a&&x({weekStart:l(d,"yyyy-MM-dd"),grade:c,klassId:String(p[0].id)})},[p,a]);const ye=t=>{x({weekStart:l(d,"yyyy-MM-dd"),grade:t})},we=t=>{x({weekStart:l(d,"yyyy-MM-dd"),grade:c,klassId:t})},{data:F,isLoading:je,isFetching:fe}=se().useGetTimetableStudentByKlass(a,{schoolYear:(n==null?void 0:n.schoolYear)??0,semester:(n==null?void 0:n.semester)??0,startAt:(n==null?void 0:n.startAt)??"",endAt:(n==null?void 0:n.endAt)??""},{enabled:ce.hasApplicableVersion&&a!==null,queryKey:["/api/admin/timetable/student/klass",{segment:n,klassId:a}],placeholderData:ne,staleTime:1e3*60*3}),{data:B,isLoading:be,isFetching:ke}=se().useGetTimetableStudentByKlass(a,{schoolYear:(i==null?void 0:i.schoolYear)??0,semester:(i==null?void 0:i.semester)??0,startAt:(i==null?void 0:i.startAt)??"",endAt:(i==null?void 0:i.endAt)??""},{enabled:me.hasApplicableVersion&&a!==null,queryKey:["/api/admin/timetable/student/klass",{segment:i,klassId:a}],placeholderData:ne,staleTime:1e3*60*3}),O=t=>t?Array.isArray(t)?t:[t]:[],b=m.useMemo(()=>O(F),[F]),k=m.useMemo(()=>O(B),[B]),Se=m.useMemo(()=>{const t=G(b),s=G(k);return[{segment:n,columns:t.students,entries:t.entries},{segment:i,columns:s.students,entries:s.entries}]},[n,i,b,k]),{columns:W,getEntriesForDate:ve}=We(Se,t=>t.id),K=je||i!==null&&be,Me=fe||i!==null&&ke,M=xe||K,Ae=Me&&!K,A=m.useMemo(()=>p.find(t=>t.id===a),[p,a]),D=m.useMemo(()=>{if(!z)return;const t=v.map((s,o)=>{if(!s.segment)return null;const u=o===0?b:k;return Re(s.versions,ae(s.segment.startAt),s.hasApplicableVersion&&!M?u:void 0,ae(s.segment.endAt))}).filter(s=>s!==null);return t.find(s=>
1s.type===N.READY)??t[0]},[z,v,b,k,M]),V=R.type!==N.READY,$=D&&D.type!==N.READY;return e.jsx(r,{direction:"col",items:"center",gap:"8",children:e.jsxs(r,{direction:"col",className:"h-[calc(100vh-260px)] min-h-[597px] overflow-hidden rounded-[12px] bg-white p-8",gap:"4",children:[e.jsxs(r,{direction:"row",items:"center",justify:"between",children:[e.jsxs(r,{direction:"row",items:"center",gap:"2",width:"fit-content",children:[e.jsx(_,{iconName:"ChevronLeft",size:"sm",stroke:!0,position:"front",variant:"outline",color:"tertiary",onClick:ue,children:"ì§ë주"}),e.jsx(Ye,{size:"sm",variant:"solid",color:"secondary",onClick:()=>I(new Date),children:"ì¤ë"})]}),e.jsxs(r,{direction:"row",items:"center",gap:"2",width:"fit-content",children:[e.jsx(Ie,{title:`${Y.year}ë
${Y.weekNumber}주차`,size:"md",variant:"outline",color:"gray"}),e.jsx(ze,{date:d,setDate:I,showMonthYearDropdown:!0,children:e.jsxs(r,{direction:"row",items:"center",gap:"2",width:"fit-content",className:"cursor-pointer",children:[e.jsxs(g,{variant:"title",children:[l(d,"Mì dì¼ (E)",{locale:te})," ~"," ",l(re(d,f-1),"Mì dì¼ (E)",{locale:te})]}),e.jsx(U,{name:"ChevronDown",size:"md",stroke:!0})]})})]}),e.jsx(_,{iconName:"ChevronRight",size:"sm",stroke:!0,position:"back",variant:"outline",color:"tertiary",onClick:ge,children:"ë¤ì주"})]}),e.jsxs(r,{direction:"row",items:"center",justify:"between",children:[e.jsxs(r,{direction:"row",items:"center",gap:"2",width:"fit-content",children:[e.jsxs(r,{direction:"row",items:"center",gap:"1",width:"fit-content",children:[e.jsx("div",{className:"h-3 w-3 rounded-[4px] bg-purple-500"}),e.jsx(g,{children:"ë³ê²½ì¬í(ìì
ì´ë, ê²°ë³´ê°)"})]}),e.jsxs(r,{direction:"row",items:"center",gap:"1",width:"fit-content",children:[e.jsx("div",{className:"h-3 w-3 rounded-[4px] bg-pink-500"}),e.jsx(g,{children:"ìí"})]}),e.jsxs(r,{direction:"row",items:"center",gap:"1",width:"fit-content",children:[e.jsx("div",{className:"h-3 w-3 rounded-[4px] bg-red-500"}),e.jsx(g,{children:"ì ìì¬í"})]})]}),e.jsxs(r,{direction:"row",items:"center",gap:"1",width:"fit-content",children:[e.jsx(U,{name:"infoFill",size:"sm"}),e.jsx(g,{size:"sm",variant:"sub",weight:"lg",children:"ì¡°íë§ ê°ë¥í©ëë¤. ìì
ë³ê²½ì [íê¸ ìê°í] ëë [êµì¬ ìê°í]ìì ì§íí´ì£¼ì¸ì."})]}),e.jsxs(r,{direction:"row",items:"center",gap:"2",width:"fit-content",children:[e.jsxs(H,{value:c,onValueChange:ye,children:[e.jsx(Q,{className:"w-[100px]",children:e.jsx(X,{children:`${c}íë
`})}),e.jsx(Z,{children:de.map(t=>e.jsxs(J,{value:String(t),children:[t,"íë
"]},t))})]}),e.jsxs(H,{value:(a==null?void 0:a.toString())??"",onValueChange:we,disabled:p.length===0,children:[e.jsx(Q,{children:e.jsx(X,{placeholder:"ë° ì í",children:(A==null?void 0:A.name)??"ë° ì í"})}),e.jsx(Z,{children:p.map(t=>e.jsx(J,{value:t.id.toString(),children:t.name},t.id))})]})]})]}),e.jsx(Ke,{status:R,versionStatus:D,semesterBoundary:le?L:void 0}),e.jsxs(r,{direction:"row",items:"start",className:"relative min-h-0 flex-1 overflow-auto rounded-lg border border-gray-200",children:[Ae&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-start justify-center bg-white/80 pt-40 backdrop-blur-sm",children:e.jsxs(r,{direction:"col",items:"center",justify:"center",className:"max-w-[448px] rounded-2xl border border-slate-200 bg-white p-8 shadow-sm",gap:"4",children:[e.jsx(Ee,{size:"lg",color:"primary"}),e.jsx(g,{variant:"title",children:"ìê°í를 ë¶ë¬ì¤ê³ ììµëë¤"})]})}),M&&!V&&!$?e.jsx(r,{direction:"row",items:"center",className:"p-4",children:Array.from({length:f}).map((t,s)=>e.jsxs(r,{direction:"col",items:"center",gap:"2",className:"border-r border-gray-200 p-4",children:[e.jsx(ee,{className:"mb-2 h-5 w-24"}),e.jsx("div",{className:"flex flex-col gap-1",children:Array.from({length:(h==null?void 0:h.lastPeriod)||7}).map((o,u)=>e.jsx("div",{className:"flex gap-1",children:Array.from({length:8}).map((y,w)=>e.jsx(ee,{className:"h-12 w-12 rounded-sm"},w))},u))})]},s))}):V||$?e.jsx(r,{direction:"col",items:"center",justify:"center",className:"min-h-[300px] w-full p-8",children:e.jsx(Fe,{title:"í´ë¹ 기ê°ì ìê°í ì ë³´ê° ììµëë¤"})}):a?W.length===0?e.jsx(r,{direction:"col",items:"center",justify:"center",className:"min-h-[300px] w-full p-8",children:e.jsx(g,{variant:"dim",size:"md",children:"í´ë¹ íê¸ì íìì´ ììµëë¤"})}):Array.from({length:f}).map((t,s)=>{const o=re(d,s);return e.jsxs(r,{direction:"col",items:"center",gap:"2",className:"border-r border-gray-200 p-4",children:[e.jsx(g,{size:"md",weight:"md",children:o.toLocaleDateString("ko-KR",{month:"long",day:"numeric",weekday:"short"})}),e.jsx(Be,{date:o,students:W,entries:ve(o),maxPeriod:h==null?void 0:h.lastPeriod,minPeriod:1,showRowLabels:s===0,onCellClick:(u,y,w)=>pe(u,y,o,w)})]},s)}):e.jsx(r,{direction:"col",items:"center",justify:"center",className:"min-h-[300px] w-full p-8",children:e.jsx(g,{variant:"dim",size:"md",children:"íê¸ì ì íí´ì£¼ì¸ì"})})]})]})})}export{nt as StudentTimetablePage};
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.