PageSourceSearch

https://fossilsketch.org/_next/static/chunks/pages/instructor/student_stats-faed1c4d84f553e6.js

js fossilsketch.org collected 2026-10-09 00:41:46 UTC 30,273 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8697],{3754:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/instructor/student_stats",function(){return s(6040)}])},7444:function(e,t,s){"use strict";var a=s(2322),n=(s(2784),s(9094)),r=s(6577),i=s.n(r);t.Z=function(e){var t=e.width,s=void 0===t?400:t,r=e.height,o=void 0===r?140:r,c=e.link,l=void 0===c?"/":c;return(0,a.jsx)(n.M,{children:(0,a.jsx)("a",{href:l,children:(0,a.jsx)(i(),{src:"/logos/logo.png",alt:"FossilSketch logo",width:s,height:o})})})}},2468:function(e,t,s){"use strict";var a=s(930),n=s(2322),r=s(2784),i=s(2589),o=s(2927),c=s.n(o),l=s(5117),d=s(8855),u=s(7973);t.Z=function(e){var t=e.classHandler,s=e.joinClassHandler,o=(0,r.useContext)(u.Z),_=(0,r.useState)([]),m=_[0],h=_[1];return i.S.useQuery(["classroom.getClasses"],{onSuccess:function(e){h(e.map((function(e){return{value:e.id,label:e.name}}))),!o.currentClass&&e.length>0&&(o.setCurrentClass(e[0].id),t(e[0].id))}}),(0,r.useEffect)((function(){0==o.role&&m.length>0&&!m.some((function(e){return"-1"===e.value}))&&h((function(e){return(0,a.Z)(e).concat([{value:"-1",label:"+ Join New Class"}])}))}),[m]),(0,n.jsx)("div",{children:m.length>0&&(0,n.jsxs)("div",{className:c().select_class_container,children:[(0,n.jsx)(l.x,{className:c().select_class_text,children:"SELECTED CLASS:"}),(0,n.jsx)(d.Ph,{placeholder:"Select Class",value:o.currentClass,onChange:function(e){"-1"==e?s():(o.setCurrentClass(e),t(e))},data:m,radius:"xl",size:"md",classNames:{input:c().select_input,dropdown:c().select_dropdown,item:c().select_item}})]})})}},1783:function(e,t,s){"use strict";var a=s(2322),n=s(2784),r=s(7001),i=s(4736),o=s(7973),c=s(7648),l=s(5092),d=s(3341),u=s(8454),_=s(2183),m=s(5166),h=s(8890),g=s(7444),p=s(4621),x=s.n(p),f=s(9097),v=s.n(f),b=s(5632),j=[{path:"/home",text:"Home",icon:c.Z,visibleTo:[0,1,2]},{path:"/database",text:"Database",icon:l.Z,visibleTo:[0,1,2]},{path:"/progress",text:"Progress",icon:d.Z,visibleTo:[0]}],N=[{path:"/instructor/student_stats",text:"Student Statistics",icon:u.Z,visibleTo:[1,2]},{path:"/instructor/game_builder",text:"Game Builder",icon:_.Z,visibleTo:[2]},{path:"/instructor/new_fossil",text:"New Microfossil",icon:u.Z,visibleTo:[1,2]},{path:"/instructor/new_class",text:"New Class",icon:u.Z,visibleTo:[1,2]},{path:"/instructor/game_builder?tab=matching",text:"Matching Games",icon:u.Z,visibleTo:[2]},{path:"/instructor/add_instructor",text:"Add Instructor",icon:u.Z,visibleTo:[2]},{path:"/instructor/select_content",text:"Select Content",icon:u.Z,visibleTo:[1,2]}];t.Z=function(e){var t=e.handleLogout,s=(0,b.useRouter)(),c=(0,n.useContext)(o.Z),l=c.role,d=c.currentClass,u=c.setRole,_=(0,n.useState)(null!==l&&void 0!==l?l:-1),p=_[0],f=_[1];(0,n.useEffect)((function(){var e=localStorage.getItem("role");if(null!==e){var t=parseInt(e,10);if(!Number.isNaN(t))return f(t),void u(t)}void 0!==l&&null!==l&&l>=0&&f(l)}),[l,u]);var S=(0,n.useState)(!1),C=S[0],y=S[1],w=function(e){var t=e.split("?")[0];return s.pathname===t?"".concat(x().link_icon," ").concat(x().active):x().link_icon},k=function(e){var t=e.split("?")[0];return s.pathname===t?"".concat(x().link," ").concat(x().active):x().link};return(0,a.jsxs)("div",{children:[(0,a.jsxs)(r.d,{opened:C,onClose:function(){return y(!1)},size:"md",padding:"xl",overlayOpacity:.3,classNames:{drawer:x().drawer},children:[(0,a.jsx)("div",{className:x().logo,children:(0,a.jsx)(g.Z,{width:270,height:100,link:"/home"})}),j.map((function(e){return e.visibleTo.includes(p)&&(0,a.jsxs)("div",{className:x().link_container,children:[(0,a.jsx)(e.icon,{className:w(e.path)}),(0,a.jsx)(v(),{href:e.path,children:(0,a.jsx)("a",{className:k(e.path),children:e.text})})]},e.path)})),p>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:x().link_container,children:[(0,a.jsx)(m.Z,{className:x().link_icon}),(0,a.jsx)("div",{className:x().link,style:{cursor:"default"},children:"Manage"})]}),(0,a.jsx)("div",{className:x().instructor_container,children:N.filter((function(e){return"/instru
1ctor/add_instructor"!==e.path||"47"!==d&&"48"!==d})).map((function(e){return e.visibleTo.includes(p)&&(0,a.jsxs)("div",{className:"".concat(x().link_container," ").concat(x().manage_link),children:[(0,a.jsx)(e.icon,{className:w(e.path)}),(0,a.jsx)(v(),{href:e.path,children:(0,a.jsx)("a",{className:k(e.path),children:e.text})})]},e.path)}))})]}),(0,a.jsxs)("div",{className:x().link_container,children:[(0,a.jsx)(h.Z,{className:x().link_icon}),(0,a.jsx)("a",{className:x().link,onClick:function(){return t()},children:"Logout"})]})]}),(0,a.jsx)(i.k,{onClick:function(){return y(!0)},children:(0,a.jsx)("div",{className:x().toggle_menu})})]})}},6040:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return X}});var a=s(8788),n=s(865),r=s(6670),i=s(6383),o=s(930),c=s(2970),l=s(2322),d=s(2784),u=s(966),_=s(1141),m=s(50),h=s(61),g=s(5117),p=s(7841),x=s(2623),f=s(9094),v=s(1017),b=s(7804),j=s(5289),N=s(8660),S=s(1783),C=s(4761),y=s(813),w=s.n(y),k=s(9236),T=s(5511),Z=s(9309);function M(e,t){return null===e||void 0===e?void 0:e.filter((function(e){return e===t})).length}T.kL.register(T.uw,T.f$,T.ZL,T.Dx,T.u,T.De);var I=function(e){var t,s=e.chartData,a=(0,C.rZ)(),n=null===s||void 0===s?void 0:s.highestScores.length,r=(0,d.useState)("Highest Scores"),i=r[0],o=r[1],c=[a.colors.pastelBlue[5],a.colors.pastelGreen[5],a.colors.pastelYellow[5]],u={labels:[1,2,3],datasets:[{label:"Number of students",data:(t="Highest Scores"===i?null===s||void 0===s?void 0:s.highestScores:null===s||void 0===s?void 0:s.averageScores,[M(t,1),M(t,2),M(t,3)]),backgroundColor:c,borderColor:"black"}]},_={responsive:!0,plugins:{title:{display:!0,text:"Students Participated: ".concat(null===s||void 0===s?void 0:s.highestScores.reduce((function(e,t){return 0!==t?e+1:e}),0)),font:{size:24}},legend:{display:!1}},scales:{x:{title:{display:!0,text:"Score (# of Stars)",font:{size:16}},grid:{display:!1},ticks:{font:{size:16}}},y:{title:{display:!0,text:"# of Students",font:{size:16}},ticks:{font:{size:16}}}}};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between"},children:[(0,l.jsxs)(k.D,{order:2,style:{color:"white"},children:["Total Class Students:"," ",(0,l.jsx)("span",{style:{color:"#0be4e4"},children:n})]}),(0,l.jsx)("p",{children:(null===s||void 0===s?void 0:s.status)?(0,l.jsx)(k.D,{order:4,style:{color:"#ffe2c6",display:"inline"},children:"Enabled"}):(0,l.jsx)(k.D,{order:4,style:{color:"#c6e3ff",display:"inline"},children:"Disabled"})})]}),(0,l.jsx)(f.M,{style:{gap:"10px"},children:["Highest Scores","Average Scores"].map((function(e){return(0,l.jsx)(p.z,{color:"#ffe2c6",variant:i===e?"filled":"outline",onClick:function(){return o(e)},classNames:{root:w().root_btn},children:e},e)}))}),(0,l.jsx)("div",{className:w().bar_container,children:(0,l.jsx)("div",{className:w().bar,children:(0,l.jsx)(Z.$Q,{options:_,data:u})})})]})};function E(e){var t=null===e||void 0===e?void 0:e.filter((function(e){return 1===e})).length;return[t,(null===e||void 0===e?void 0:e.length)-t]}T.kL.register(T.qi,T.u,T.De);var z=function(e){var t,s=e.chartData,a=e.videoName,n=(0,C.rZ)(),r=s&&(null===s||void 0===s||null===(t=s.scores)||void 0===t?void 0:t.length),i=[n.colors.pastelGreen[5],n.colors.pastelRed[5]],o={labels:["Watched","Not Watched"],datasets:[{data:E(null===s||void 0===s?void 0:s.scores),backgroundColor:i,borderColor:n.colors.gray[2],borderWidth:1}]},c={responsive:!0,plugins:{title:{display:!0,text:a,font:{size:32}},legend:{position:"top",font:{size:32}},tooltip:{callbacks:{label:function(e){var t=e.label||"",s=e.raw;return"".concat(t,": ").concat(s," (").concat((s/r*100).toFixed(2),"%)")}}}}};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between"},children:[(0,l.jsxs)(k.D,{order:2,style:{color:"white"},children:["Total Class Students:"," ",(0,l.jsx)("span",{style:{color:"#0be4e4"},children:r})]}),(0,l.jsx)("p",{children:(null===s||void 0===s?void 0:s.status)?(0,l.jsx)(k.D,{order:4,style:{color:"#ffe2c6",display:"inline"},children:"Enabled"}):(0,l.jsx)(k.D,{order:4,style:{color:"#c6e3ff",display:"inline"},children:"Disabled"})})]}),(0,l.jsx)("div",{className:w().pie_container,children:(0,l.jsx)("div",{className:w().pie,children:(0,l.jsx)(Z.by,{data:o,options:c})})})]})},L=s(2468),P=s(7973),D=s(2589),A=new Map([["bug_sorting","Bug Sorting"],["feature_id","Feature Id"],["ostracod_orientation","Valve Orientation"],["morphotype_matching","Morphotype Matching"],["ostracod_outline","Fossil Outline"],["chamber_matching","Chamber Matching"],["foram_assemblage","Foram Assemblage"],["ostracod_assemblage","Ostracod Assemblage"],["morphotype_assemblage","Morphotype Assemblage"],["alaska_assemblage","Alaska Assemblage"],["microfossils_video","Microfossils Video"],["ostracod_video","Ostracod Video"],["foraminifera_video","Foraminifera Video"],["morphotype_video","Morphotype Video"],["ostracoda_identification","Ostracod
1a Identification"],["foraminifera_identification","Foraminifera Identification"],["morphotype_identification","Morphotype Identification"],["mb_temporal","Matagorda Bay Temporal"],["mb_spatial","Matagorda Bay Spatial"],["mb_ostracod","Matagorda Bay Ostracod"]]);function F(e){var t=(0,i.Z)(e,3);return 3600*(t[0]||0)+60*(t[1]||0)+(t[2]||0)}function O(e){var t=Math.max(0,Math.floor(e)),s=Math.floor(t/3600),a=Math.floor(t%3600/60),n=t%60;return"".concat(s,"h ").concat(a,"m ").concat(n,"s")}var X=function(e){var t=e.handleLogout,C=(0,d.useContext)(P.Z),y=(0,d.useState)(!1),k=y[0],T=y[1];(0,d.useEffect)((function(){return T(!0)}),[]);var Z,M,E=(0,d.useState)(),X=E[0],G=E[1],B=(0,d.useState)(""),H=B[0],R=B[1],U=(0,d.useState)(""),Q=U[0],V=U[1],K=(0,d.useState)(),W=K[0],Y=K[1],q=(0,d.useState)(),$=q[0],J=q[1],ee=(0,d.useState)(-1),te=ee[0],se=ee[1],ae=(0,d.useState)(),ne=ae[0],re=ae[1],ie=(0,d.useState)(""),oe=ie[0],ce=ie[1],le=(0,d.useState)(""),de=le[0],ue=le[1],_e=(0,d.useState)(1),me=_e[0],he=_e[1],ge=(0,d.useState)([]),pe=ge[0],xe=ge[1],fe=(0,d.useState)([0,0,0]),ve=fe[0],be=fe[1],je=(0,d.useState)(""),Ne=je[0],Se=je[1],Ce=(0,d.useState)(""),ye=Ce[0],we=Ce[1],ke=(0,d.useState)("name"),Te=ke[0],Ze=ke[1],Me=(0,d.useState)("asc"),Ie=Me[0],Ee=Me[1],ze=D.S.useQuery(["classroom.getProgress",{classroomId:C.currentClass}]).data,Le=D.S.useMutation(["classroom.getModuleProgress"],{onSuccess:function(e){Y(e)}}),Pe=Le.mutate,De=Le.isLoading,Ae=D.S.useMutation(["classroom.getStudentProgress"],{onSuccess:function(e){re(e)}}).mutate,Fe=(0,d.useState)(null),Oe=Fe[0],Xe=Fe[1],Ge=D.S.useQuery(["user.getActivityTimes",{classroomId:parseInt(C.currentClass||"0")||0,userId:te}],{enabled:Boolean(C.currentClass&&-1!==te),refetchInterval:1e4,refetchIntervalInBackground:!0,onSuccess:function(){Xe(new Date)}}),Be=Ge.data,He=Ge.refetch,Re=Ge.isFetching,Ue=D.S.useQuery(["classroom.getUsageStats",{classroomId:C.currentClass}]).data,Qe=D.S.useQuery(["classroom.getClasses"]).data,Ve=D.S.useQuery(["custom_games.getClassroomGames",{classroomId:parseInt(null!==(Z=C.currentClass)&&void 0!==Z?Z:"0")}],{enabled:!!C.currentClass&&parseInt(C.currentClass)>0}).data,Ke=D.S.useQuery(["custom_games.getUserCustomGameScores",{classroomId:parseInt(null!==(M=C.currentClass)&&void 0!==M?M:"0")}],{enabled:!!C.currentClass&&parseInt(C.currentClass)>0&&te>0}).data,We=function(e,t){R(e),V(t),Pe({classroomId:C.currentClass,moduleName:e,moduleType:t})},Ye=function(e){se(e),Ae({userId:e})},qe=function(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"".concat(w().usage_data_text," ").concat(w().number),children:e[0]})," ","hours"," ",(0,l.jsx)("span",{className:"".concat(w().usage_data_text," ").concat(w().number),children:e[1]})," ","mins"," ",(0,l.jsx)("span",{className:"".concat(w().usage_data_text," ").concat(w().number),children:e[2]})," ","secs"]})};(0,d.useEffect)((function(){if(ze){var e,t,s=null!==(t=null===Ve||void 0===Ve?void 0:Ve.map((function(e){return{name:"custom_game_".concat(e.id),type:"g/e",gameId:e.id,displayName:e.config.title}})))&&void 0!==t?t:[];G((0,r.Z)((0,n.Z)({},ze.modules),{customGames:s}));var a=null===(e=ze.modules)||void 0===e?void 0:e.videos[0];a&&(R(a.name),V(a.type)),J(ze.students);var i=ze.students[0];i&&se(i.id)}}),[ze,C.currentClass,Ve]),(0,d.useEffect)((function(){if(Qe&&C.currentClass){var e=Qe.find((function(e){return e.id===C.currentClass}));Se(e?e.name:"")}}),[Qe,C.currentClass]),(0,d.useEffect)((function(){if(X){var e=X.videos[0];e&&We(e.name,e.type)}}),[X]),(0,d.useEffect)((function(){H&&Q&&Pe({classroomId:C.currentClass,moduleName:H,moduleType:Q})}),[H,Q,C.currentClass]),(0,d.useEffect)((function(){if($){var e=$[0];e&&Ye(e.id)}}),[$]),(0,d.useEffect)((function(){Ae({userId:te})}),[te]),(0,d.useEffect)((function(){Ue&&(xe(Ue.filteredData),be(Ue.avgClassTime))}),[Ue]);var $e=function(){var e=ye.trim().toLowerCase(),t=pe.filter((function(t){return!e||"".concat(t.firstName," ").concat(t.lastName).toLowerCase().includes(e)}));return(0,o.Z)(t).sort((function(e,t){var s="asc"===Ie?1:-1;switch(Te){case"logins":return s*((e.numLogins||0)-(t.numLogins||0));case"auto":return s*((e.numAutoLogouts||0)-(t.numAutoLogouts||0));case"total":return s*(F(e.timeSpent)-F(t.timeSpent));case"avg":return s*(F(e.avgTimeSpent)-F(t.avgTimeSpent));default:return s*"".concat(e.firstName," ").concat(e.lastName).localeCompare("".concat(t.firstName," ").concat(t.lastName))}}))},Je=function(e){Te===e?Ee("asc"===Ie?"desc":"asc"):(Ze(e),Ee("asc"))};if(!k)return(0,l.jsxs)("div",{className:w().background,children:[(0,l.jsx)(S.Z,{handleLogout:t}),(0,l.jsx)("div",{className:w().container,children:(0,l.jsx)("div",{className:w().loader_container,children:(0,l.jsx)(u.a,{})})})]});var et=function(e){var t=(0,i.Z)(e||[0,0,0],3),s=t[0],a=t[1],n=t[2],r=function(e){return String(e).padStart(2,"0")};return"".concat(r(s),":").concat(r(a),":").concat(r(n))},tt=function(){var e=(0,a.Z)((function(){var e,t,a,n,r,i,l,d,u,_,m;return(0,c.__generator)(this,(function(c){switch(c.label){case 0:return e=["Student Name","Number of Logins","Number of Autologouts","Total Time Spent","Average Time Spent"],n=pe.map((function(e){return["".concat(e.firstName," ").concat(e.lastName),null!==(t=e.numLogins)&&void 0!==t?t:0,null!==(a=e.numAutoLogouts)&&void 0!==a?a:0,et(e.timeSpent),et(e.avgTimeSpent)]})),[4,Promise.all([s.e(4182),s.e(406)]).then(s.bind(s,4333))];case 1:return r=c.sent(),i=[["Class roster: ".concat(Ne||"")],["Note: login and time totals are global (all classes), not class-specific."],[],e].concat((0,o.Z)(n)),l=r.utils.book_new(),d=r.utils.aoa_to_sheet(i),r.utils.book_append_sheet(l,d,"Usage"),u=new Date,_="".concat(u.getFullYear(),"-").concat(String(u.getMonth()+1).padStart(2,"0"),"-").concat(String(u.getDate()).padStart(2,"0"),"_").concat(String(u.getHours()).padStart(2,"0")).concat(String(u.getMinutes()).padStart(2,"0")),m=function(e){return(e||"").replace(/[^a-z0-9_-]+/gi,"_")},r.writeFile(l,"usage_".concat(m(Ne)||"class","_").concat(_,".xlsx")),[2]}}))}));return function(){return e.apply(this,arguments)}}(),st=function(){var e=(0,a.Z)((function(){var e,t,a,n,r,o,l,d,u,_,m,h,g,p,x,f,v,b,j,N,S,C;return(0,c.__generator)(this,(function(c){switch(c.label){case 0:return ne?(t=(null===(e=($||[]).find((function(e){return e.id===te}
1)))||void 0===e?void 0:e.name)||"",a=Object.entries(ne),n=new Map(a),o=["bug_sorting","feature_id","ostracod_orientation","morphotype_matching","ostracod_outline","chamber_matching"],l=(r=["microfossils_video","ostracod_video","foraminifera_video","morphotype_video"]).filter((function(e){return n.has(e)})).map((function(e){return[e,n.get(e)]})),d=o.filter((function(e){return n.has(e)})).map((function(e){return[e,n.get(e)]})),u=new Set(r),_=new Set(o),m=a.filter((function(e){var t=(0,i.Z)(e,1)[0];return!u.has(t)&&!_.has(t)})),h=[["Class: ".concat(Ne||"")],["Student: ".concat(t||"")],[]],g=function(e){return h.push([e])},p=function(){return h.push(["Module","Type","Watched/Highest","Average","Attempts","Time (s)","Time (H:M:S)"])},x=function(e){return e.timesPlayed?Math.round((e.totalScore||0)/e.timesPlayed):0},f=function(e,t){var s,a,n,r=A.get(e)||e,i=Be&&Be[e]?Be[e]:0;"g/e"===t.type?h.push([r,"Game/Exercise",null!==(s=t.highestScore)&&void 0!==s?s:0,x(t),null!==(a=t.timesPlayed)&&void 0!==a?a:0,i,O(i)]):h.push([r,"Video",null!==(n=t.status)&&void 0!==n?n:0,"","",i,O(i)])},l.length&&(g("VIDEOS"),p(),l.forEach((function(e){var t=(0,i.Z)(e,2),s=t[0],a=t[1];return f(s,a)}))),d.length&&(g("MINI-GAMES"),p(),d.forEach((function(e){var t=(0,i.Z)(e,2),s=t[0],a=t[1];return f(s,a)}))),m.length&&(g("EXERCISES"),p(),m.forEach((function(e){var t=(0,i.Z)(e,2),s=t[0],a=t[1];return f(s,a)}))),[4,Promise.all([s.e(4182),s.e(406)]).then(s.bind(s,4333))]):[2];case 1:return v=c.sent(),b=v.utils.book_new(),j=v.utils.aoa_to_sheet(h),v.utils.book_append_sheet(b,j,"Progress"),N=new Date,S="".concat(N.getFullYear(),"-").concat(String(N.getMonth()+1).padStart(2,"0"),"-").concat(String(N.getDate()).padStart(2,"0"),"_").concat(String(N.getHours()).padStart(2,"0")).concat(String(N.getMinutes()).padStart(2,"0")),C=function(e){return(e||"").replace(/[^a-z0-9_-]+/gi,"_")},v.writeFile(b,"progress_".concat(C(t)||"student","_").concat(C(Ne)||"class","_").concat(S,".xlsx")),[2]}}))}));return function(){return e.apply(this,arguments)}}();return(0,l.jsxs)("div",{className:w().background,children:[(0,l.jsx)(S.Z,{handleLogout:t}),(0,l.jsx)(L.Z,{classHandler:function(e){return C.setCurrentClass(e)},joinClassHandler:function(){}}),(0,l.jsx)("div",{className:w().container,children:(0,l.jsxs)(_.m,{keepMounted:!1,variant:"pills",radius:"xl",defaultValue:"Class Progress",classNames:{tab:w().top_tab},children:[(0,l.jsx)(_.m.List,{children:(0,l.jsx)("div",{className:w().header,children:(0,l.jsxs)("div",{className:w().tabs_row,children:[(0,l.jsx)(_.m.Tab,{className:w().tab,value:"Class Progress",children:"Class Progress"}),(0,l.jsx)(_.m.Tab,{className:w().tab,value:"Progress",children:"Progress"}),(0,l.jsx)(_.m.Tab,{className:w().tab,value:"Usage",children:"Usage (global)"})]})})}),(0,l.jsx)(_.m.Panel,{value:"Class Progress",className:w().tab_panel,children:(0,l.jsxs)(m.r,{className:w().grid,children:[(0,l.jsx)(m.r.Col,{span:3,className:w().tab_container,children:(0,l.jsxs)("div",{className:w().tab_background,children:[(0,l.jsx)(h.o,{placeholder:"Search modules...",value:oe,onChange:function(e){return ce(e.currentTarget.value)},size:"sm",className:w().search,classNames:{input:w().search_input}}),X&&Object.entries(X).map((function(e){var t,s=(0,i.Z)(e,2),a=s[0],n=(s[1]||[]).filter((function(e){return e.name.toLowerCase().includes(oe.trim().toLowerCase())}));return(0,l.jsxs)("div",{children:[(0,l.jsx)(g.x,{className:w().module_title,children:(t=a,t.replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").map((function(e){return e.toUpperCase()})).join(" "))}),n.map((function(e,t){var s=e.displayName||e.name;return(0,l.jsx)(p.z,{color:"#008383",className:e.name===H?"".concat(w().name_button," ").concat(w().name_button_pressed):w().name_button,onClick:function(){We(e.name,e.type)},children:s},t)}))]},a)}))]})}),(0,l.jsx)(m.r.Col,{span:9,className:w().tab_content,children:De?(0,l.jsx)("div",{className:w().loader_container,children:(0,l.jsx)(u.a,{})}):"video"===Q?(0,l.jsx)(z,{chartData:W,videoName:H}):(0,l.jsx)(I,{chartData:W})})]})}),(0,l.jsx)(_.m.Panel,{value:"Progress",className:w().tab_panel,children:(0,l.jsxs)(m.r,{className:w().grid,children:[(0,l.jsx)(m.r.Col,{span:3,className:w().tab_container,children:(0,l.jsxs)("div",{className:w().tab_background,children:[(0,l.jsx)(h.o,{placeholder:"Search students...",value:de,onChange:function(e){return ue(e.currentTarget.value)},size:"sm",className:w().search,classNames:{input:w().search_input}}),null===$||void 0===$?void 0:$.map((function(e){return de.trim()&&!e.name.toLowerCase().includes(de.trim().toLowerCase())?null:(0,l.jsx)(p.z,{className:e.id===te?"".concat(w().name_button," ").concat(w().name_button_pressed):w().name_button,onClick:function(){return Ye(e.id)},children:e.name})}))]})}),(0,l.jsxs)(m.r.Col,{span:9,className:w().tab_content,children:[(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:8,marginBottom:8},children:[(0,l.jsx)(p.z,{radius:"xl",size:"xs",variant:"outline",onClick:function(){return He()},disabled:Re,children:Re?"Refreshing\u2026":"Refresh"}),(0,l.jsxs)(g.x,{size:"xs",color:"#cbd5d6",children:["Last updated: ",Oe?Oe.toLocaleTimeString():"-"]})]}),(0,l.jsx)("div",{className:w().action_bar,children:(0,l.jsx)(p.z,{radius:"xl",size:"sm",onClick:st,disabled:!ne,children:"Download Progress (XLSX)"})}),(0,l.jsx)("div",{className:w().tab_content_container,children:$&&(null===$||void 0===$?void 0:$.length)>0?(0,l.jsx)(m.r,{style:{margin:"0"},children:ne&&function(){var e=Object.entries(ne),t=new Map(e),s=["microfossils_video","ostracod_video","foraminifera_video","morphotype_video"],a=["bug_sorting","feature_id","ostracod_orientation","morphotype_matching","ostracod_outline","chamber_matching"],n=new Set(s),r=new Set(a
1),o=s.filter((function(e){return t.has(e)})).map((function(e){return[e,t.get(e)]})),c=a.filter((function(e){return t.has(e)})).map((function(e){return[e,t.get(e)]})),d=e.filter((function(e){var t=(0,i.Z)(e,1)[0];return!n.has(t)&&!r.has(t)})),u=function(e){var t=(0,i.Z)(e,2),s=t[0],a=t[1];return(0,l.jsx)(m.r.Col,{span:6,children:(0,l.jsxs)(x.X,{className:w().score_container,children:[(0,l.jsx)(g.x,{className:w().game_name,children:A.get(s)||s}),"g/e"===a.type?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(m.r,{style:{padding:"2.5% 2% 1.5% 2%"},justify:"space-between",children:[(0,l.jsxs)(g.x,{className:w().score_title,children:["Highest Score:"," ",(0,l.jsx)("span",{className:w().score_1,children:a.highestScore})]}),(0,l.jsxs)(g.x,{className:w().score_title,children:["Average Score:"," ",(0,l.jsx)("span",{className:w().score_1,children:0===a.timesPlayed?0:Math.round((null===a||void 0===a?void 0:a.totalScore)/(null===a||void 0===a?void 0:a.timesPlayed))})]})]}),(0,l.jsxs)(g.x,{className:w().score_title,children:["Number of Attempts:"," ",(0,l.jsx)("span",{className:w().score_2,children:a.timesPlayed})]}),(0,l.jsxs)(g.x,{className:w().score_title,children:["Time Spent:"," ",(0,l.jsx)("span",{className:w().score_1,children:O((null===Be||void 0===Be?void 0:Be[s])||0)})]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(g.x,{className:w().score_title,children:["Watched:"," ",(0,l.jsx)("span",{className:w().score_1,children:a.status})]}),(0,l.jsxs)(g.x,{className:w().score_title,children:["Time Spent:"," ",(0,l.jsx)("span",{className:w().score_1,children:O((null===Be||void 0===Be?void 0:Be[s])||0)})]})]})]})},s)};return(0,l.jsxs)(l.Fragment,{children:[o.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.r.Col,{span:12,children:(0,l.jsx)(g.x,{className:w().module_title,children:"VIDEOS"})}),o.map(u)]}),c.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.r.Col,{span:12,children:(0,l.jsx)(g.x,{className:w().module_title,children:"MINI-GAMES"})}),c.map(u)]}),d.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.r.Col,{span:12,children:(0,l.jsx)(g.x,{className:w().module_title,children:"EXERCISES"})}),d.map(u)]}),Ke&&Ke.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.r.Col,{span:12,children:(0,l.jsx)(g.x,{className:w().module_title,children:"CUSTOM GAMES"})}),Ke.map((function(e){var t,s=null===Ve||void 0===Ve?void 0:Ve.find((function(t){return t.id===e.gameId})),a=(null===s||void 0===s||null===(t=s.config)||void 0===t?void 0:t.title)||"Custom Game ".concat(e.gameId);return(0,l.jsx)(m.r.Col,{span:6,children:(0,l.jsxs)(x.X,{className:w().score_container,children:[(0,l.jsx)(g.x,{className:w().game_name,children:a}),(0,l.jsxs)(m.r,{style:{padding:"2.5% 2% 1.5% 2%"},justify:"space-between",children:[(0,l.jsxs)(g.x,{className:w().score_title,children:["Highest Score:"," ",(0,l.jsx)("span",{className:w().score_1,children:e.bestScore})]}),(0,l.jsxs)(g.x,{className:w().score_title,children:["Number of Attempts:"," ",(0,l.jsx)("span",{className:w().score_2,children:e.attempts})]})]})]})},e.gameId)}))]})]})}()}):(0,l.jsx)("div",{className:w().no_data_message,children:(0,l.jsxs)(f.M,{children:[(0,l.jsx)(j.Z,{color:"white",size:"40"}),(0,l.jsx)(g.x,{color:"white",children:"Not sufficient data to display"})]})})})]})]})}),(0,l.jsx)(_.m.Panel,{value:"Usage",className:"".concat(0===pe.length&&w().tab_panel),children:pe.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:w().action_bar_between,children:[(0,l.jsx)(h.o,{placeholder:"Search students...",value:ye,onChange:function(e){return we(e.currentTarget.value)},size:"sm",className:w().search,classNames:{input:w().search_input}}),(0,l.jsx)(p.z,{radius:"xl",size:"sm",onClick:tt,children:"Download Usage (XLSX)"})]}),(0,l.jsx)(g.x,{size:"sm",color:"dimmed",style:{marginBottom:12,maxWidth:720},children:"Session usage is global per student (all classes combined). The table lists students in the selected class, but login and time totals are not limited to this class. Per-activity time on the Progress tab is class-specific."}),(0,l.jsxs)("div",{className:w().avg_class_time,children:[ve.map((function(e,t){return(0,l.jsxs)("div",{className:w().time,children:[(0,l.jsx)(g.x,{className:w().time_digit,children:e||0}),0===t&&(0,l.jsx)(g.x,{className:w().time_unit,children:" hours "}),1===t&&(0,l.jsx)(g.x,{className:w().time_unit,children:" mins "}),2===t&&(0,l.jsx)(g.x,{className:w().time_unit,children:" secs "})]},t)})),(0,l.jsxs)(g.x,{size:"md",className:w().time_label,children:[(0,l.jsx)(N.Z,{size:"30"}),"Average Global Student Time"]})]}),(0,l.jsxs)(v.Z,{className:w().usage_data_list_card,children:[(0,l.jsxs)(g.x,{className:w().total_students,children:["Total Students:"," ",(0,l.jsx)("span",{style:{color:"#008383"},children:pe.length})]}),(0,l.jsx)("div",{className:w().table_container,children:(0,l.jsxs)("table",{className:w().usage_table,children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{children:[(0,l.jsx)("th",{onClick:function(){return Je("name")},children:"Student Name"}),(0,l.jsx)("th",{onClick:function(){return Je("logins")},children:"Number of Logins"}),(0,l.jsx)("th",{onClick:function(){return Je("auto")},children:"Number of Autologouts"}),(0,l.jsx)("th",{onClick:function(){return Je("total")},children:"Total Time Spent"}),(0,l.jsx)("th",{onClick:function(){return Je("avg")},children:"Average Time Spent"})]})}),(0,l.jsx)("tbody",{children:$e().slice(10*(me-1),10*(me-1)+10).map((function(e,t){return(0,l.jsxs)("tr",{children:[(0,l.jsx)("td",{className:w().name,children:"".concat(e.firstName," ").concat(e.lastName)}),(0,l.jsx)("td",{className:w().number,children:e.numLogins}),(0,l.jsx)("td",{className:w().number,style:{color:"#ff0000"},children:e.numAutoLogouts}),(0,l.jsx)("td",{className:w().time_cell,children:qe(e.timeSpent)}),(0,l.jsx)("td",{className:w().time_cell,children:qe(e.avgTimeSpent)})]},"".concat(e.firstName,"-").concat(e.lastName,"-").concat(t))}))})]})}),(0,l.jsx)(b.t,{className:w().pagination,page:me,onChange:he,total:Math.ceil($e().length/10)})]})]}):(0,l.jsx)("div",{className:w().no_data_message,children:(0,l.jsxs)(f.M,{children:[(0,l.jsx)(j.Z,{color:"white",size:"40"}),(0,l.jsx)(g.x,{color:"white",children:"Not sufficient data to display"})]})})})]})})]})}},2927:function(e){e.exports={select_class_container:"select_classroom_select_class_container__X3OUR",select_class_text:"select_classroom_select_class_text__AyYWR"}},4621:function(e){e.exports={drawer:"sidebar_drawer__KpNLV",logo:"sidebar_logo__3EwEr",link_container:"sidebar_link_container__pZwwX",link_icon:"sidebar_link_icon___D4fO",active:"sidebar_active__zubOB",link:"sidebar_link__gXfrl",instructor_container:"sidebar_instructor_container__K4glu",manage_link:"sidebar_manage_link__MXySh",toggle_menu:"sidebar_toggle_menu__dg0Az"}},813:function(e){e.exports={background:"student_stats_background__8H_Kk",container:"student_stats_container__NXr_R",tab:"student_stats_tab__EY7Lv",top_tab:"student_stats_top_tab__VpEP_",tab_panel:"student_stats_tab_panel__DqeKK",grid:"student_stats_grid__A9zQz",tab_container:"student_stats_tab_container__CpjfR",tab_background:"student_stats_tab_background__bZ_sU",module_title:"student_stats_module_title__XRc9d",tab_content:"student_stats_tab_content__jhwWJ",loader_container:"student_stats_loader_container__PCXEB",tab_content_container:"student_stats_tab_content_container__ysnnT",search:"student_stats_search__QsZin",search_input:"student_stats_search_input__Xppjn",action_bar:"student_stats_action_bar__DeXUK",name_button:"student_stats_name_button___Td_4",name_button_pressed:"student_stats_name_button_pressed__aQpzN",score_container:"student_stats_score_container__uiZT9",game_name:"student_stats_game_name__RGmOX",score_title:"student_stats_score_title__a7oGm",score_1:"student_stats_score_1__0xBpl",score_2:"student_stats_score_2__uRwa6",pagination:"student_stats_pagination__yY5Cj",bar_container:"student_stats_bar_container__KhO47",bar:"student_stats_bar__jgpBI",root_btn:"student_stats_root_btn__mgD94",pie_container:"student_stats_pie_container__yzZCH",pie:"student_stats_pie__Y7IIu",export_button:"student_stats_export_button__B7B8i",avg_class_time:"student_stats_avg_class_time__rJ9dp",time:"student_stats_time__wz5rq",time_digit:"student_stats_time_digit__bl4Np",time_unit:"student_stats_time_unit__KgPCG",time_label:"student_stats_time_label__Rz_TL",usage_data_list_card:"student_stats_usage_data_list_card__M4a28",table_container:"student_stats_table_container__3Xnb1",usage_table:"student_stats_usage_table__7i7hk",time_cell:"student_stats_time_cell__pCN5h",header:"student_stats_header__qQXlx",tabs_row:"student_stats_tabs_row__4_I9e",total_students:"student_stats_total_students___PM8C",usage_details:"student_stats_usage_details__UL_M4",usage_data_label:"student_stats_usage_data_label__vTqdL",usage_data_text:"student_stats_usage_data_text__o7G19",name:"student_stats_name__zvR7M",number:"student_stats_number__80xOZ",no_data_message:"student_stats_n
1o_data_message__2OZ0t",action_bar_between:"student_stats_action_bar_between__1r2OT"}}},function(e){e.O(0,[5587,6577,443,7301,5944,8855,7530,3977,4717,9774,2888,179],(function(){return t=3754,e(e.s=t);var t}));var t=e.O();_N_E=t}]);

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.