1"use strict";(self.webpackChunkranking=self.webpackChunkranking||[]).push([[491],{491(e,s,t){t.r(s),t.d(s,{StudentModalContent:()=>p,default:()=>f});var n=t(9379),r=t(9950),d=t(2875),l=t(8327),i=t(486),a=t(264),o=t(8287),c=t(2116),u=t(2009),m=t(4414);const h={personal:"Personalisiert",self:"Selbst erstellt"},p=e=>{let{student:s,classId:t,rank:p,totalStudents:f,onClose:x,onRemove:j,inline:g=!1}=e;const[S,N]=(0,r.useState)([]),[k,v]=(0,r.useState)([]),[_,b]=(0,r.useState)(!0),[w,A]=(0,r.useState)(null),[C,y]=(0,r.useState)(!1),[E,M]=(0,r.useState)(!1),P=r.useRef(null),[I,W]=(0,r.useState)([]),[O,F]=(0,r.useState)(null),[L,T]=(0,r.useState)([]),[R,q]=(0,r.useState)(null);(0,r.useEffect)(()=>{t&&(0,i.aqn)(t).then(e=>W(e||[])).catch(()=>W([]))},[t]),(0,r.useEffect)(()=>{F(null),T([]),y(!1)},[null===s||void 0===s?void 0:s.id,t]);const Q=(0,r.useMemo)(()=>{const e=new Set(S.filter(e=>e.folder_id).map(e=>e.folder_id));let s=!0;for(;s;)s=!1,I.forEach(t=>{e.has(t.id)&&t.parent_folder_id&&!e.has(t.parent_folder_id)&&(e.add(t.parent_folder_id),s=!0)});return e},[S,I]),X=(0,r.useMemo)(()=>I.filter(e=>(null===O?!e.parent_folder_id:e.parent_folder_id===O)&&Q.has(e.id)).sort((e,s)=>e.folder_order-s.folder_order),[I,O,Q]),z=e=>{if(-1===e)F(null),T([]);else{const s=L[e];F(s.id),T(s=>s.slice(0,e+1))}};r.useEffect(()=>()=>clearTimeout(P.current),[]),(0,r.useEffect)(()=>{if(null===s||void 0===s||!s.id)return;let e=!1;(async()=>{try{const[t,n]=await Promise.all([(0,i.xwS)(s.id),(0,i.tyu)(s.id)]);if(e)return;const r=Array.isArray(null===t||void 0===t?void 0:t.data)?t.data:Array.isArray(t)?t:[];N(r),v(Array.isArray(n)?n:[])}catch(t){console.error("Failed to load student data:",t)}finally{e||b(!1)}})();const t=(0,i.iwI)(e=>{e.student_id===s.id&&v(s=>{const t=s.findIndex(s=>s.task_id===e.task_id);if(-1===t)return[...s,{task_id:e.task_id,status:e.status}];const r=[...s];return r[t]=(0,n.A)((0,n.A)({},r[t]),{},{status:e.status}),r})});return()=>{e=!0,t()}},[null===s||void 0===s?void 0:s.id]);const{sheetSessionProgress:G,progressSummary:K,completedSheetIds:V}=(0,r.useMemo)(()=>{const e=new Map(k.map(e=>[e.task_id,(0,a.S)(e.status)])),s={},t={correct:[],corrected:[],wrong:[],inWork:[],error:[],notAttempted:[]},n=new Set;return S.forEach(r=>{s[r.id]={};let d=0,l=!0;(r.sessions||[]).forEach(n=>{const i={correct:[],corrected:[],wrong:[],error:[],notAttempted:[],inWork:[]};(n.tasks||[]).forEach(s=>{d++;const n=e.get(s.id)||"not-attempted";"correct"===n?(i.correct.push(s.id),t.correct.push(s.id)):"corrected"===n?(i.corrected.push(s.id),t.corrected.push(s.id)):"wrong"===n?(i.wrong.push(s.id),t.wrong.push(s.id),l=!1):"error"===n?(i.error.push(s.id),t.error.push(s.id)):"in-work"===n?(i.inWork.push(s.id),t.inWork.push(s.id),l=!1):(i.notAttempted.push(s.id),t.notAttempted.push(s.id),l=!1)}),s[r.id][n.id]=i}),d>0&&l&&n.add(r.id)}),{sheetSessionProgress:s,progressSummary:t,completedSheetIds:n}},[S,k]),{activeSheets:B,completedSheets:D}=(0,r.useMemo)(()=>{const e=[],s=[];return S.forEach(t=>{(null===O?!t.folder_id:t.folder_id===O)&&(V.has(t.id)?s.push(t):e.push(t))}),{activeSheets:e,completedSheets:s}},[S,V,O]),H=C?D:D.slice(0,6),J=(0,r.useMemo)(()=>k.map(e=>(0,n.A)((0,n.A)({},e),{},{student_id:s.id})),[k,s.id]),U=(0,r.useMemo)(()=>S.filter(e=>{const t=e.assignments||[];return t.some(e=>e.user_id===s.id)&&!t.some(e=>e.class_id)}).length,[S,s.id]),Y=e=>{const t=e.assignments||[],n=t.some(e=>e.user_id===s.id),r=t.some(e=>e.class_id);return n&&r?"personal":n?"self":r?"teacher":"unknown"};return s?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)("div",{className:"student-modal".concat(g?" student-modal--inline":""),children:[x&&(0,m.jsx)("button",{className:"close-button",onClick:x,children:(0,m.jsx)(d.QCr,{})}),(0,m.jsxs)("div",{className:"student-modal-header",children:[(0,m.jsx)(l.A,{seed:s.avatar_seed,size:44}),(0,m.jsxs)("div",{className:"student-modal-header-info",children:[(0,m.jsxs)("div",{className:"student-modal-name-row",children:[(0,m.jsx)("span",{className:"student-modal-name",children:s.name}),(0,m.jsx)("span",{className:"status-pill ".concat(s.connected?"online":"offline"),children:s.connected?"Online":"Offline"})]}),(0,m.jsxs)("div",{className:"student-modal-meta",children:[(0,m.jsxs)("span",{children:["XP ",s.points||0]}),null!=p&&(0,m.jsxs)("span",{children:["Rang ",p,"/",f]}),U>0&&(0,m.jsxs)("span",{className:"self-sheet-count-badge",children:[(0,m.jsxs)("span",{className:"self-sheet-icon-wrap",children:[(0,m.jsx)(d.Gp9,{className:"self-sheet-icon"}),(0,m.jsx)("span",{className:"self-sheet-icon-count",children:U})]}),"Selbst erstellt"]}
1)]})]})]}),(0,m.jsx)("div",{className:"student-modal-progress",children:(0,m.jsx)(o.A,{progress:K})}),(0,m.jsxs)("div",{className:"student-modal-body",children:[L.length>0&&(0,m.jsxs)("div",{className:"sm-breadcrumb",children:[(0,m.jsx)("button",{className:"sm-bc-item",onClick:()=>z(-1),children:(0,m.jsx)(d.rQ8,{})}),L.map((e,s)=>(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(d.X6T,{className:"sm-bc-sep"}),(0,m.jsx)("button",{className:"sm-bc-item".concat(s===L.length-1?" current":""),onClick:()=>z(s),children:e.name})]},e.id))]}),_?(0,m.jsx)("p",{className:"muted",children:"Lade\u2026"}):0===S.length?(0,m.jsx)("p",{className:"muted",children:"Keine \xdcbungsbl\xe4tter"}):(0,m.jsxs)(m.Fragment,{children:[X.length>0&&(0,m.jsx)("div",{className:"sm-folder-row",children:X.map(e=>(0,m.jsxs)("button",{className:"sm-folder-chip",onClick:()=>(e=>{F(e.id),T(s=>[...s,{id:e.id,name:e.name}])})(e),onMouseEnter:()=>q(e.id),onMouseLeave:()=>q(null),children:[R===e.id?(0,m.jsx)(d.g1V,{className:"sm-folder-icon"}):(0,m.jsx)(d.M1W,{className:"sm-folder-icon"}),(0,m.jsx)("span",{children:e.name})]},e.id))}),B.length>0&&(0,m.jsx)("div",{className:"student-sheet-grid",children:B.map(e=>{const s=Y(e);return(0,m.jsx)(c.A,{sheet:e,onSheetClicked:()=>A(e),onSessionClick:()=>A(e),sessionProgress:G[e.id]||{},origin:s,originLabel:h[s]||h.unknown},e.id)})}),D.length>0&&(0,m.jsxs)("div",{className:"student-completed-section",children:[(0,m.jsxs)("div",{className:"student-sheets-section-label",children:["Abgeschlossen (",D.length,")"]}),(0,m.jsx)("div",{className:"student-sheet-grid",children:H.map(e=>{const s=Y(e);return(0,m.jsx)("div",{className:"student-sheet-completed-wrapper",children:(0,m.jsx)(c.A,{sheet:e,onSheetClicked:()=>A(e),onSessionClick:()=>A(e),sessionProgress:G[e.id]||{},origin:s,originLabel:h[s]||h.unknown})},e.id)})}),D.length>6&&!C&&(0,m.jsxs)("button",{className:"load-more-btn",onClick:()=>y(!0),children:[D.length-6," weitere laden"]})]}),0===X.length&&0===B.length&&0===D.length&&(0,m.jsx)("p",{className:"muted",children:"Ordner ist leer"})]})]}),j&&(0,m.jsx)("div",{className:"student-modal-footer",children:(0,m.jsxs)("button",{className:"remove-student-link".concat(E?" confirming":""),onClick:()=>{E?(clearTimeout(P.current),j(s.id)):(M(!0),P.current=setTimeout(()=>M(!1),4e3))},children:[(0,m.jsx)(d.qbC,{})," ",E?"Wirklich entfernen?":"Sch\xfcler entfernen"]})})]}),w&&(0,m.jsx)(u.A,{isOpen:!0,sheet:w,readOnly:!0,onClose:()=>A(null),sessionProgress:G[w.id]||{},studentEntries:J,classStudents:[s],showStudentProgress:!0,classId:t})]}):null},f=e=>(0,m.jsx)("div",{className:"student-modal-overlay",children:(0,m.jsx)(p,(0,n.A)({},e))})}}]);
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.