@vue-skuilder/platform-ui 0.1.31 → 0.1.32-b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/assets/{About-D3O4ft8c.js → About-BaAnvLBW.js} +2 -2
  2. package/dist/assets/{About-D3O4ft8c.js.map → About-BaAnvLBW.js.map} +1 -1
  3. package/dist/assets/{AdminDashboard-DH-Wi1tp.js → AdminDashboard-CqjTUAz6.js} +2 -2
  4. package/dist/assets/{AdminDashboard-DH-Wi1tp.js.map → AdminDashboard-CqjTUAz6.js.map} +1 -1
  5. package/dist/assets/ClassroomCtrlPanel-DY_JOO4n.js +2 -0
  6. package/dist/assets/{ClassroomCtrlPanel-BZ2Jso_N.js.map → ClassroomCtrlPanel-DY_JOO4n.js.map} +1 -1
  7. package/dist/assets/{Classrooms-Dk081Q6U.js → Classrooms-C2axF94L.js} +2 -2
  8. package/dist/assets/{Classrooms-Dk081Q6U.js.map → Classrooms-C2axF94L.js.map} +1 -1
  9. package/dist/assets/CourseRouter-Cpx3l0G5.js +2 -0
  10. package/dist/assets/{CourseRouter-BK4PYhtA.js.map → CourseRouter-Cpx3l0G5.js.map} +1 -1
  11. package/dist/assets/Courses-JnwlMj7_.js +2 -0
  12. package/dist/assets/{Courses-DU7lVPoV.js.map → Courses-JnwlMj7_.js.map} +1 -1
  13. package/dist/assets/{DataInputFormTester-CL0gV9cw.js → DataInputFormTester-COeenuPs.js} +2 -2
  14. package/dist/assets/{DataInputFormTester-CL0gV9cw.js.map → DataInputFormTester-COeenuPs.js.map} +1 -1
  15. package/dist/assets/{EloModeration-DfSLA79x.js → EloModeration-WKZ0ZI9K.js} +2 -2
  16. package/dist/assets/{EloModeration-DfSLA79x.js.map → EloModeration-WKZ0ZI9K.js.map} +1 -1
  17. package/dist/assets/{JoinCode-njKk1YJx.js → JoinCode-BC6k_fbV.js} +2 -2
  18. package/dist/assets/{JoinCode-njKk1YJx.js.map → JoinCode-BC6k_fbV.js.map} +1 -1
  19. package/dist/assets/NewCourseDialog-CP_yAeBS.js +2 -0
  20. package/dist/assets/{NewCourseDialog-gxkU-IdZ.js.map → NewCourseDialog-CP_yAeBS.js.map} +1 -1
  21. package/dist/assets/{ReleaseNotes-Dp_ykMR1.js → ReleaseNotes-Du1rXmdr.js} +2 -2
  22. package/dist/assets/{ReleaseNotes-Dp_ykMR1.js.map → ReleaseNotes-Du1rXmdr.js.map} +1 -1
  23. package/dist/assets/{RequestPasswordReset-BavuuCBu.js → RequestPasswordReset-CD6KAb-x.js} +2 -2
  24. package/dist/assets/{RequestPasswordReset-BavuuCBu.js.map → RequestPasswordReset-CD6KAb-x.js.map} +1 -1
  25. package/dist/assets/{ResetPassword-CA8HHOIy.js → ResetPassword-CdcPL1lR.js} +2 -2
  26. package/dist/assets/{ResetPassword-CA8HHOIy.js.map → ResetPassword-CdcPL1lR.js.map} +1 -1
  27. package/dist/assets/Study-CiczyXm5.js +2 -0
  28. package/dist/assets/{Study-B4tBks0X.js.map → Study-CiczyXm5.js.map} +1 -1
  29. package/dist/assets/{TagInformation-CHi7V_t8.js → TagInformation-C_wEpXyQ.js} +2 -2
  30. package/dist/assets/{TagInformation-CHi7V_t8.js.map → TagInformation-C_wEpXyQ.js.map} +1 -1
  31. package/dist/assets/{User-DbWphbh1.js → User-9YKBLtBO.js} +2 -2
  32. package/dist/assets/{User-DbWphbh1.js.map → User-9YKBLtBO.js.map} +1 -1
  33. package/dist/assets/UserStats-DceiClex.js +2 -0
  34. package/dist/assets/{UserStats-rzVY5epq.js.map → UserStats-DceiClex.js.map} +1 -1
  35. package/dist/assets/{VerifyEmail-pMcSlNzF.js → VerifyEmail-z-t9eEy2.js} +2 -2
  36. package/dist/assets/{VerifyEmail-pMcSlNzF.js.map → VerifyEmail-z-t9eEy2.js.map} +1 -1
  37. package/dist/assets/{edit-ui.es-DGbs4pNc.js → edit-ui.es-XlgQUjdy.js} +2 -2
  38. package/dist/assets/{edit-ui.es-DGbs4pNc.js.map → edit-ui.es-XlgQUjdy.js.map} +1 -1
  39. package/dist/assets/index-BweUwxDQ.js +3 -0
  40. package/dist/assets/{index-CSo_psn8.js.map → index-BweUwxDQ.js.map} +1 -1
  41. package/dist/assets/{index-aYts26PW.css → index-CGPKQ_L0.css} +1 -1
  42. package/dist/assets/index-dF8VqAFl.js +3 -0
  43. package/dist/assets/index-dF8VqAFl.js.map +1 -0
  44. package/dist/assets/{mousetrap-DZcUUEaw.js → mousetrap-DtEBLuOp.js} +2 -2
  45. package/dist/assets/{mousetrap-DZcUUEaw.js.map → mousetrap-DtEBLuOp.js.map} +1 -1
  46. package/dist/index.html +2 -2
  47. package/dist/sw.js +1 -1
  48. package/dist/sw.js.map +1 -1
  49. package/package.json +6 -6
  50. package/dist/assets/ClassroomCtrlPanel-BZ2Jso_N.js +0 -2
  51. package/dist/assets/CourseRouter-BK4PYhtA.js +0 -2
  52. package/dist/assets/Courses-DU7lVPoV.js +0 -2
  53. package/dist/assets/NewCourseDialog-gxkU-IdZ.js +0 -2
  54. package/dist/assets/Study-B4tBks0X.js +0 -2
  55. package/dist/assets/UserStats-rzVY5epq.js +0 -2
  56. package/dist/assets/index-CSo_psn8.js +0 -3
  57. package/dist/assets/index-PISHyq1I.js +0 -3
  58. package/dist/assets/index-PISHyq1I.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{N as e}from"./NewCourseDialog-gxkU-IdZ.js";import{d as s,l as t,s as r,g as a,_ as o,r as i,c as l,h as n,o as u,w as c,a as d,e as g,t as C,b as h,i as f,j as p,k as m,p as y,q as v,f as w,F as b,n as _}from"./index-PISHyq1I.js";import{s as x}from"./mousetrap-DZcUUEaw.js";const D=s({name:"CourseStubCard",props:{courseId:{type:String,required:!0}},emits:["refresh"],data:()=>({courseConfig:null,questionCount:0,isPrivate:!1,updatePending:!0,addingCourse:!1}),async created(){try{const e=a().getCourseDB(this.courseId);this.courseConfig=await e.getCourseConfig(),this.isPrivate=!this.courseConfig.public,this.questionCount=(await e.getCourseInfo()).cardCount,this.updatePending=!1}catch(e){console.error(`Error loading course ${this.courseId}: ${e}`)}},methods:{async registerForCourse(){this.addingCourse=!0,t(`Attempting to register for ${this.courseId}.`),await(await r()).registerForCourse(this.courseId),this.$emit("refresh")},navigateToInfo(){const e=`/q/${this.courseConfig?.name.replaceAll(" ","_")}`;this.$router.push(e)}}});const A=s({name:"CoursesView",components:{NewCourseDialog:e,CourseStubCard:o(D,[["render",function(e,s,t,r,a,o){const f=i("v-icon"),p=i("v-card-title"),m=i("v-card-item"),y=i("v-card-text"),v=i("v-btn"),w=i("v-card-actions"),b=i("v-card");return!e.updatePending&&e.courseConfig?(u(),l(b,{key:0,"data-cy":"available-course-card"},{default:c((()=>[d(m,null,{default:c((()=>[d(p,{"data-cy":"course-title"},{default:c((()=>[g(C(e.courseConfig.name)+" ",1),e.isPrivate?(u(),l(f,{key:0,icon:"mdi-eye-off",class:"ml-2"})):n("",!0)])),_:1})])),_:1}),d(y,null,{default:c((()=>[g(" Questions: "+C(e.questionCount)+" ",1),h("p",null,C(e.courseConfig.description),1)])),_:1}),d(w,null,{default:c((()=>[d(v,{color:"primary",onClick:e.navigateToInfo},{default:c((()=>s[0]||(s[0]=[g("More Info")]))),_:1},8,["onClick"]),d(v,{"data-cy":"register-course-button",loading:e.addingCourse,color:"primary",onClick:e.registerForCourse},{default:c((()=>s[1]||(s[1]=[g(" Register ")]))),_:1},8,["loading","onClick"])])),_:1})])),_:1})):n("",!0)}]])},data:()=>({existingCourses:[],registeredCourses:[],awaitingCreateCourse:!1,spinnerMap:{},newCourseDialog:!1,user:null,myQuiltsPanel:0,showAllCourses:!1,coursesPerPage:8}),computed:{availableCourses(){const e=this.existingCourses.filter((e=>!this.registeredCourses.includes(e))),s=this.user?.getUsername();return e.filter((e=>{if(!s)return!1;return e.public||e.creator===s||-1!==e.admins.indexOf(s)||-1!==e.moderators.indexOf(s)}))},displayedAvailableCourses(){return this.showAllCourses?this.availableCourses:this.availableCourses.slice(0,this.coursesPerPage)},hasMoreCourses(){return this.availableCourses.length>this.coursesPerPage},newCourseAttrs(){return{attrs:{"aria-label":"Create new quilt"},on:{click:()=>this.newCourseDialog=!0}}}},async created(){this.user=await r(),this.refreshData()},methods:{processResponse(){this.newCourseDialog=!1,this.refreshData()},toggleShowMore(){this.showAllCourses=!this.showAllCourses},async refreshData(){console.log("Pulling user course data...");try{const e=(await this.user.getCourseRegistrationsDoc()).courses.filter((e=>"active"===e.status||"maintenance-mode"===e.status||void 0===e.status)).map((e=>e.courseID));console.log(`userCourseIDs: ${e}`),this.existingCourses=await a().getCoursesDB().getCourseList(),console.log(`existingCourses: \n\t${this.existingCourses.map((e=>e.name)).join(",\n\t")}`),this.registeredCourses=this.existingCourses.filter((s=>{let t=!1;return e.forEach((e=>{s.courseID===e&&(t=!0)})),t}))}catch(e){console.error("Error refreshing course data:",e),p({status:m.error,text:`Failed to load courses: ${e||"Database access error"}`})}},async createCourse(){this.awaitingCreateCourse=!0;const e=await x({type:f.CREATE_COURSE,data:{name:"testCourseName",description:"All of these courses will be the same!",public:!0,deleted:!1,creator:this.user.getUsername(),admins:[this.user.getUsername()],moderators:[],dataShapes:[],questionTypes:[]},user:this.user.getUsername(),response:null});p({status:e.response,text:`Course ${JSON.stringify(e)} created`}),this.awaitingCreateCourse=!1},async addCourse(e){this.spinnerMap[e]=!0,console.log(`Attempting to register for ${e}.`),await(this.user?.registerForCourse(e)),delete this.spinnerMap[e],this.refreshData()},async dropCourse(e){this.spinnerMap[e]=!0,console.log(`Attempting to drop ${e}.`),await(this.user?.dropCourse(e)),delete this.spinnerMap[e],this.refreshData()}}}),I={class:"d-flex align-center justify-space-between"},k={"data-cy":"registered-course",class:"d-flex align-center"};const P=o(A,[["render",function(e,s,t,r,a,o){const f=i("v-btn"),p=i("v-expansion-panel-title"),m=i("router-link"),x=i("v-icon"),D=i("v-card"),A=i("v-col"),P=i("v-row"),M=i("v-expansion-panel-text"),$=i("v-expansion-panel"),q=i("v-expansion-panels"),S=i("course-stub-card"),R=i("new-course-dialog"),j=i("v-dialog"),E=i("v-container");return u(),l(E,{fluid:""},{default:c((()=>[d(f,y({color:"primary",fixed:"",location:"bottom right",icon:"mdi-plus",size:"large",class:"mb-4 mr-4","data-cy":"create-course-fab"},e.newCourseAttrs,v(e.newCourseAttrs.on)),null,16),d(P,null,{default:c((()=>[d(A,{cols:"12"},{default:c((()=>[d(q,{modelValue:e.myQuiltsPanel,"onUpdate:modelValue":s[0]||(s[0]=s=>e.myQuiltsPanel=s)},{default:c((()=>[d($,null,{default:c((()=>[d(p,{"data-cy":"registered-quilts-panel"},{default:c((()=>s[3]||(s[3]=[g("My Registered Quilts")]))),_:1}),d(M,null,{default:c((()=>[d(P,null,{default:c((()=>[(u(!0),w(b,null,_(e.registeredCourses,(t=>(u(),l(A,{key:t.courseID,cols:"12",sm:"6",md:"4",lg:"3"},{default:c((()=>[d(D,{variant:"outlined",density:"compact",class:"pa-2"},{default:c((()=>[h("div",I,[h("div",k,[d(m,{to:`/q/${t.name.replaceAll(" ","_")}`,class:"text-subtitle-2","data-cy":"registered-course-title"},{default:c((()=>[g(C(t.name),1)])),_:2},1032,["to"]),t.public?n("",!0):(u(),l(x,{key:0,size:"x-small",class:"ml-1"},{default:c((()=>s[4]||(s[4]=[g("mdi-eye-off")]))),_:1}))]),d(f,{size:"x-small",variant:"text",color:"error","data-cy":"drop-course-button",loading:void 0!==e.spinnerMap[t.courseID],onClick:s=>e.dropCourse(t.courseID)},{default:c((()=>s[5]||(s[5]=[g(" Drop ")]))),_:2},1032,["loading","onClick"])])])),_:2},1024)])),_:2},1024)))),128))])),_:1})])),_:1})])),_:1})])),_:1},8,["modelValue"])])),_:1}),d(A,{cols:"12",class:"mt-4"},{default:c((()=>[s[6]||(s[6]=h("h2",{class:"text-h5 mb-3"},"Available Quilts",-1)),d(P,null,{default:c((()=>[(u(!0),w(b,null,_(e.displayedAvailableCourses,(s=>(u(),l(A,{key:s.courseID,cols:"12",sm:"6",md:"4",lg:"3"},{default:c((()=>[d(S,{"data-cy":"available-course-card","course-id":s.courseID,onRefresh:e.refreshData},null,8,["course-id","onRefresh"])])),_:2},1024)))),128))])),_:1}),e.hasMoreCourses?(u(),l(P,{key:0,justify:"center",class:"mt-2"},{default:c((()=>[d(f,{variant:"text",color:"primary","data-cy":"courses-show-more-button",onClick:e.toggleShowMore},{default:c((()=>[g(C(e.showAllCourses?"Show Less":"Show More"),1)])),_:1},8,["onClick"])])),_:1})):n("",!0)])),_:1})])),_:1}),d(j,{modelValue:e.newCourseDialog,"onUpdate:modelValue":s[2]||(s[2]=s=>e.newCourseDialog=s),fullscreen:"",transition:"dialog-bottom-transition",scrim:!1},{default:c((()=>[d(R,{onCourseEditingComplete:s[1]||(s[1]=s=>e.processResponse())})])),_:1},8,["modelValue"])])),_:1})}],["__scopeId","data-v-ba0ad091"]]);export{P as default};
2
- //# sourceMappingURL=Courses-DU7lVPoV.js.map
@@ -1,2 +0,0 @@
1
- import{s as e,M as s}from"./mousetrap-DZcUUEaw.js";import{d as t,s as a,i,j as o,_ as r,r as l,c as d,o as u,w as n,a as c,e as m,b as p}from"./index-PISHyq1I.js";const h=r(t({name:"NewCourseDialog",props:{name:{type:String,required:!1,default:""}},emits:["CourseEditingComplete"],data(){return{mousetrap:new s(this.$el),id:"",courseName:"",description:"",publicCourse:!1,deleted:!1,admins:[],moderators:[],dataShapes:[],questionTypes:[],banner:void 0,thumb:void 0,updatePending:!1,nameRules:[e=>!(e.length>30)||"Course name must be 30 characters or less"]}},created(){this.mousetrap.bind("esc",this.clearFormAndDismiss)},methods:{async submit(){this.updatePending=!0;const s=await a(),t={name:this.courseName,description:this.description,public:this.publicCourse,deleted:this.deleted,creator:s.getUsername(),admins:this.admins,moderators:this.moderators,dataShapes:this.dataShapes,questionTypes:this.questionTypes},r=await e({data:t,type:i.CREATE_COURSE,response:null,user:s.getUsername()});r.response&&r.response.ok?(o({text:`Course ${this.courseName} created.`,status:r.response.status}),this.clearFormAndDismiss()):(o({text:`Failed to create course ${this.courseName}.`,status:r.response.status}),console.warn(`Resp: ${JSON.stringify(r.response)}`)),this.updatePending=!1},clearFormAndDismiss(){this.description="",this.publicCourse=!1,this.deleted=!1,this.admins=[],this.moderators=[],this.$emit("CourseEditingComplete")}}}),[["render",function(e,s,t,a,i,o){const r=l("v-card-title"),h=l("v-spacer"),b=l("v-icon"),v=l("v-btn"),f=l("v-toolbar"),g=l("v-text-field"),C=l("v-row"),y=l("v-textarea"),_=l("v-radio"),w=l("v-radio-group"),N=l("v-container"),q=l("v-form"),S=l("v-card");return u(),d(S,null,{default:n((()=>[c(f,{flat:"",color:"primary",dark:""},{default:n((()=>[c(r,{class:"text-h6 font-weight-regular"},{default:n((()=>s[3]||(s[3]=[m(" Start a New Quilt ")]))),_:1}),c(h),c(v,{icon:"",onClick:e.clearFormAndDismiss},{default:n((()=>[c(b,{icon:"mdi-close"})])),_:1},8,["onClick"])])),_:1}),c(q,null,{default:n((()=>[c(N,null,{default:n((()=>[c(C,{class:"cols sm md"},{default:n((()=>[c(g,{modelValue:e.courseName,"onUpdate:modelValue":s[0]||(s[0]=s=>e.courseName=s),counter:"30",rules:e.nameRules,label:"Quilt Name",required:"",hint:"Short and descriptive","data-cy":"course-name-input"},null,8,["modelValue","rules"])])),_:1}),c(C,{class:"cols sm md"},{default:n((()=>[c(y,{modelValue:e.description,"onUpdate:modelValue":s[1]||(s[1]=s=>e.description=s),variant:"outlined",counter:"300","auto-grow":"",label:"Quilt Description",hint:"Describe the course. What subject is covered? Who might be interested?","data-cy":"course-description-input"},null,8,["modelValue"])])),_:1}),c(C,{class:"cols sm md"},{default:n((()=>[s[4]||(s[4]=p("label",null,"Public or private quilt?",-1)),c(w,{modelValue:e.publicCourse,"onUpdate:modelValue":s[2]||(s[2]=s=>e.publicCourse=s),required:"",hint:"Private quilts can be shared and collaborated on with other individual users, but will not be accessable without an invitation. A private quilt can be made public later.","persistent-hint":"",inline:"","data-cy":"course-visibility-radio"},{default:n((()=>[c(_,{label:"Public",value:!0,"data-cy":"public-radio"}),c(_,{label:"Private",value:!1,"data-cy":"private-radio"})])),_:1},8,["modelValue"])])),_:1}),c(C,{class:"cols sm md"},{default:n((()=>[c(v,{loading:e.updatePending,color:"primary","data-cy":"save-course-button",onClick:e.submit},{default:n((()=>s[5]||(s[5]=[m(" Save Course Changes ")]))),_:1},8,["loading","onClick"])])),_:1})])),_:1})])),_:1})])),_:1})}]]);export{h as N};
2
- //# sourceMappingURL=NewCourseDialog-gxkU-IdZ.js.map
@@ -1,2 +0,0 @@
1
- import{d as e,I as s,J as t,K as i,g as o,s as r,L as a,_ as l,r as n,f as c,o as d,b as u,c as m,h,w as p,e as g,F as v,n as f,a as y,t as C,M as S,N as w,u as k}from"./index-PISHyq1I.js";import{useDataInputFormStore as F}from"./edit-ui.es-DGbs4pNc.js";import{allCourseWare as b}from"./index-CSo_psn8.js";const L=e({name:"SessionConfiguration",components:{SkMouseTrapToolTip:t,CourseTagFilterWidget:s},props:{initialTimeLimit:{type:Number,required:!0,default:5}},emits:["initStudySession"],data(){return{registeredHotkeys:[],allSelected:!0,activeCourses:[],activeClasses:[],hasRegistrations:!0,user:null,timeLimit:this.initialTimeLimit,courseLoadError:!1,classroomLoadError:!1,expandedFilters:{}}},computed:{hasSelectedSources(){return this.activeCourses.some((e=>e.selected))||this.activeClasses.some((e=>e.selected))},hasAnyActiveFilter(){return this.activeCourses.some((e=>e.selected&&this.hasActiveTagFilter(e)))},activeFilterCount(){return this.activeCourses.filter((e=>e.selected&&this.hasActiveTagFilter(e))).length}},watch:{timeLimit:{handler(){this.timeLimit<=0&&(this.timeLimit=1)}}},beforeUnmount(){this.registeredHotkeys&&this.registeredHotkeys.forEach((e=>{i.removeBinding(e)}))},async created(){this.user=await r(),this.timeLimit=this.initialTimeLimit,this.setHotkeys();const[e,s]=await Promise.allSettled([this.getActiveCourses(),this.getActiveClassrooms()]);"rejected"===e.status&&(console.error("Failed to load courses:",e.reason),this.courseLoadError=!0),"rejected"===s.status&&(console.error("Failed to load classrooms:",s.reason),this.classroomLoadError=!0),0!==this.activeCourses.length||0!==this.activeClasses.length||this.courseLoadError||this.classroomLoadError||(this.hasRegistrations=!1)},mounted(){document.getElementById("SelectAll")?.focus()},unmounted(){this.registeredHotkeys&&this.registeredHotkeys.forEach((e=>{i.removeBinding(e)}))},methods:{inc(){this.timeLimit=this.timeLimit+1,console.log(`inc to ${this.timeLimit}`)},dec(){this.timeLimit--,console.log(`dec to ${this.timeLimit}`)},update(){console.log(JSON.stringify(this.activeCourses)),console.log(JSON.stringify(this.activeClasses))},toggleAll(){console.log("Toggling all courses"),this.activeCourses.forEach((e=>{e.selected=this.allSelected})),this.activeClasses.forEach((e=>{e.selected=this.allSelected})),console.log(JSON.stringify(this.activeCourses))},toggleTagFilter(e){this.expandedFilters[e]=!this.expandedFilters[e]},hasActiveTagFilter:e=>a(e.tagFilter),startSession(){this.registeredHotkeys&&this.registeredHotkeys.forEach((e=>{i.removeBinding(e)}));const e=[...this.activeCourses.filter((e=>e.selected)).map((e=>{const s={type:"course",id:e.courseID};return a(e.tagFilter)&&(s.tagFilter=e.tagFilter),s})),...this.activeClasses.filter((e=>e.selected)).map((e=>({type:"classroom",id:e.classID})))];this.$emit("initStudySession",e,this.timeLimit)},async getActiveClassrooms(){const e=await(await r()).getActiveClasses(),s=[];console.log(`Active classes: ${JSON.stringify(e)}`),await Promise.all(e.map((e=>(async e=>{const t=await o().getClassroomDB(e,"student");s.push({classID:e,name:t.getConfig().name,selected:!0,reviews:0})})(e)))),this.activeClasses=s},async getActiveCourses(){this.activeCourses=(await this.user.getActiveCourses()).map((e=>({...e,selected:!0,name:"",reviews:0,tagFilter:void 0}))),Promise.all(this.activeCourses.map((async(e,s)=>{const t=await o().getCoursesDB().getCourseConfig(e.courseID),i=await(this.user?.getCourseInterface(e.courseID));return(async()=>Promise.all([this.activeCourses[s].name=t.name,this.activeCourses[s].reviews=await i.getScheduledReviewCount()]))()})))},setHotkeys(){const e=[{hotkey:"right",callback:()=>{this.timeLimit++},command:"Increase time limit"},{hotkey:"left",callback:()=>{this.timeLimit--},command:"Decrease time limit"}];i.addBinding(e),this.registeredHotkeys=e.map((e=>e.hotkey))}}}),I={key:0},D={class:"session-layout"},x={class:"course-selection-container"},E={class:"course-row-header"},_={class:"course-row-header"},T={class:"course-row-actions"},A={class:"reviews-count"},V={key:0,class:"tag-filter-container"},P={class:"select-all-row mt-3"},U={class:"fixed-controls-container"},M={class:"fixed-controls"},$={class:"mb-5"},q={key:0,class:"filter-summary mb-4"},B={class:"text-caption"},H={key:1,class:"text-h4"},R={key:2,class:"text-h4"};function z(e,s){return Math.floor(Math.random()*(s-e+1))+e}const O=e({name:"StudyView",components:{SessionConfiguration:l(L,[["render",function(e,s,t,i,o,r){const a=n("v-alert"),l=n("v-checkbox"),S=n("v-icon"),w=n("v-btn"),k=n("CourseTagFilterWidget"),F=n("v-expand-transition"),b=n("v-text-field"),L=n("SkMouseTrapToolTip"),z=n("router-link");return e.hasRegistrations||e.courseLoadError||e.classroomLoadError?(d(),c("div",I,[s[11]||(s[11]=u("div",{"data-cy":"select-quilts-header",class:"text-h4 mb-4"},"Study Session Setup",-1)),e.courseLoadError?(d(),m(a,{key:0,type:"warning",class:"mb-4"},{default:p((()=>s[2]||(s[2]=[g(" Unable to load course data. Some features may be unavailable. ")]))),_:1})):h("",!0),e.classroomLoadError?(d(),m(a,{key:1,type:"warning",class:"mb-4"},{default:p((()=>s[3]||(s[3]=[g(" Unable to load classroom data. You can still study individual courses. ")]))),_:1})):h("",!0),u("div",D,[u("div",x,[s[6]||(s[6]=u("div",{class:"text-h6 mb-3"},"Select Quilts to Study",-1)),(d(!0),c(v,null,f(e.activeClasses,(t=>(d(),c("div",{key:t.classID,class:"course-row"},[u("div",E,[y(l,{modelValue:t.selected,"onUpdate:modelValue":e=>t.selected=e,label:`Class: ${t.name}`,"hide-details":"",onClickCapture:e.update},null,8,["modelValue","onUpdate:modelValue","label","onClickCapture"]),s[4]||(s[4]=u("span",{class:"reviews-count"},"-",-1))])])))),128)),(d(!0),c(v,null,f(e.activeCourses,(t=>(d(),c("div",{key:t.courseID,class:"course-row"},[u("div",_,[y(l,{modelValue:t.selected,"onUpdate:modelValue":e=>t.selected=e,"data-cy":"course-checkbox",label:`q/${t.name}`,"hide-details":"",onClickCapture:e.update},null,8,["modelValue","onUpdate:modelValue","label","onClickCapture"]),u("div",T,[u("span",A,C(t.reviews),1),t.selected?(d(),m(w,{key:0,variant:"text",size:"small",color:e.hasActiveTagFilter(t)?"primary":"default",onClick:s=>e.toggleTagFilter(t.courseID)},{default:p((()=>[y(S,{start:"",size:"small"},{default:p((()=>s[5]||(s[5]=[g("mdi-filter-variant")]))),_:1}),g(" "+C(e.hasActiveTagFilter(t)?"Filtered":"Filter")+" ",1),y(S,{end:"",size:"small"},{default:p((()=>[g(C(e.expandedFilters[t.courseID]?"mdi-chevron-up":"mdi-chevron-down"),1)])),_:2},1024)])),_:2},1032,["color","onClick"])):h("",!0)])]),y(F,null,{default:p((()=>[t.selected&&e.expandedFilters[t.courseID]?(d(),c("div",V,[y(k,{modelValue:t.tagFilter,"onUpdate:modelValue":e=>t.tagFilter=e,"course-id":t.courseID},null,8,["modelValue","onUpdate:modelValue","course-id"])])):h("",!0)])),_:2},1024)])))),128)),u("div",P,[y(l,{id:"SelectAll",ref:"selectAll",modelValue:e.allSelected,"onUpdate:modelValue":[s[0]||(s[0]=s=>e.allSelected=s),e.toggleAll],autofocus:"",label:"Select All","hide-details":""},null,8,["modelValue","onUpdate:modelValue"])])]),u("div",U,[u("div",M,[s[10]||(s[10]=u("div",{class:"text-h6 mb-3"},"Session Settings",-1)),u("div",$,[y(b,{ref:"numberField",modelValue:e.timeLimit,"onUpdate:modelValue":s[1]||(s[1]=s=>e.timeLimit=s),class:"time-limit-field",variant:"outlined",label:"Study Session Timelimit","prepend-inner-icon":"mdi-clock-outline","prepend-icon":"mdi-minus","append-icon":"mdi-plus",suffix:e.timeLimit>1?"minutes":"minute",mask:"##",type:"number","onClick:prepend":e.dec,"onClick:append":e.inc},null,8,["modelValue","suffix","onClick:prepend","onClick:append"])]),e.hasAnyActiveFilter?(d(),c("div",q,[y(S,{size:"small",color:"primary",class:"mr-1"},{default:p((()=>s[7]||(s[7]=[g("mdi-filter")]))),_:1}),u("span",B,C(e.activeFilterCount)+" course"+C(e.activeFilterCount>1?"s":"")+" with tag filters ",1)])):h("",!0),y(L,{hotkey:"enter",command:"Start Session",disabled:!e.hasSelectedSources,"highlight-effect":"scale"},{default:p((()=>[y(w,{"data-cy":"start-studying-button",color:"success",size:"large",block:"",class:"start-btn",disabled:!e.hasSelectedSources,onClick:e.startSession},{default:p((()=>[y(S,{start:""},{default:p((()=>s[8]||(s[8]=[g("mdi-play")]))),_:1}),s[9]||(s[9]=g(" Start! "))])),_:1},8,["disabled","onClick"])])),_:1},8,["disabled"])])])])])):e.courseLoadError||e.classroomLoadError?(d(),c("div",R,s[16]||(s[16]=[u("p",null,"Unable to load study data due to technical issues.",-1),u("p",null,"Please try refreshing the page or contact support if the problem persists.",-1)]))):(d(),c("div",H,[s[15]||(s[15]=u("p",null,"You don't have anything to study!",-1)),u("p",null,[s[13]||(s[13]=g("Head over to the ")),y(z,{to:"/quilts"},{default:p((()=>s[12]||(s[12]=[g("Quilts")]))),_:1}),s[14]||(s[14]=g(" page to find something for you."))])]))}],["__scopeId","data-v-c5ff4b5f"]]),StudySession:S},inject:{router:{from:"router"}},props:{previewCourseID:{type:String,required:!1,default:""},randomPreview:{type:Boolean,required:!1},focusCourseID:{type:String,required:!1,default:""}},data:()=>({user:null,studySessionConfig:void 0,previewCourseConfig:void 0,previewMode:!1,sessionTimeLimit:5,inSession:!1,sessionPrepared:!1,sessionError:!1,errorMessage:"",sessionContentSources:[],dataInputFormStore:F(),getViewComponent:e=>b.getView(e),dataLayer:o()}),async created(){this.user=await r(),this.studySessionConfig={likesConfetti:w().config.likesConfetti};let e="";if(this.randomPreview){const s=await this.user.getCourseRegistrationsDoc(),t=(await o().getCoursesDB().getCourseList()).map((e=>e.courseID)),i=t.filter((e=>!s.courses.some((s=>s.courseID===e))));e=i.length>0?i[z(0,i.length)]:t[z(0,t.length)]}if(this.previewCourseID&&(this.previewMode=!0,o().getCoursesDB().getCourseList().then((e=>{e.forEach((e=>{e.courseID===this.previewCourseID&&(this.previewCourseConfig=e,this.previewCourseConfig.courseID=e.courseID)}))})),console.log(`[Study] COURSE PREVIEW MODE FOR ${this.previewCourseID}`),await this.user.registerForCourse(this.previewCourseID,!0),e=this.previewCourseID),this.focusCourseID&&(console.log(`[Study] FOCUS study session: ${this.focusCourseID}`),e=this.focusCourseID),e){const s=this.parseTagFilterFromQuery(),t={type:"course",id:e};a(s)&&(t.tagFilter=s,console.log("[Study] Tag filter from query params:",s)),this.initStudySession([t],this.sessionTimeLimit)}},methods:{refreshRoute(){this.router.go(0)},async initStudySession(e,s){console.log(`[Study] starting study session w/ sources: ${JSON.stringify(e)}`),this.sessionContentSources=e,this.sessionTimeLimit=s,this.inSession=!0,this.sessionPrepared=!1,console.log("[Study] Waiting for session-prepared event from StudySession component")},registerUserForPreviewCourse(){this.user.registerForCourse(this.previewCourseConfig.courseID).then((()=>this.router.push(`/quilts/${this.previewCourseConfig.courseID}`)))},handleSessionFinished(){this.refreshRoute()},handleSessionPrepared(){console.log("[Study] Session preparation complete - received session-prepared event"),this.sessionPrepared=!0,this.sessionError=!1,this.errorMessage=""},handleSessionError({message:e,error:s}){console.error("[Study] Session error:",e,s),this.sessionError=!0,this.errorMessage=e||"An error occurred while preparing your study session.",this.sessionPrepared=!1},parseTagFilterFromQuery(){const e=this.$route.query.include,s=this.$route.query.exclude,t=e=>e?Array.isArray(e)?e.flatMap((e=>e?e.split(",").map((e=>e.trim())):[])).filter(Boolean):e.split(",").map((e=>e.trim())).filter(Boolean):[];return{include:t(e),exclude:t(s)}}}}),j={key:0},N={key:1},J={key:0,align:"center"},Q={class:"text-h5"},W={key:1},Y={key:2},G={key:0,class:"session-loading"},K={key:1,class:"session-error"},X={class:"text-subtitle-1 mt-2"};const Z=l(O,[["render",function(e,s,t,i,o,r){const a=n("SessionConfiguration"),l=n("v-btn"),m=n("router-link"),v=n("v-spacer"),f=n("v-col"),S=n("v-row"),w=n("v-progress-circular"),F=n("v-container"),b=n("v-icon"),L=n("StudySession");return e.inSession?(d(),c("div",N,[e.previewMode&&e.previewCourseConfig?(d(),c("div",J,[y(S,null,{default:p((()=>[y(f,null,{default:p((()=>[u("span",Q,[s[1]||(s[1]=g(" Quilt preview for ")),u("em",null,C(e.previewCourseConfig.name),1)]),y(l,{size:"small",color:"primary",onClick:e.registerUserForPreviewCourse},{default:p((()=>s[2]||(s[2]=[g("Join")]))),_:1},8,["onClick"]),y(m,{to:`/quilts/${e.previewCourseConfig.courseID}`},{default:p((()=>[y(l,{size:"small",color:"secondary"},{default:p((()=>s[3]||(s[3]=[g("More info")]))),_:1})])),_:1},8,["to"]),y(v)])),_:1})])),_:1})])):e.previewMode?(d(),c("div",W,[y(S,null,{default:p((()=>[y(f,null,{default:p((()=>s[4]||(s[4]=[u("span",{class:"text-h5"},"... No course was specified for the preview.",-1),u("div",null,"(this shouldn't happen)...",-1)]))),_:1})])),_:1})])):h("",!0),e.inSession?(d(),c("div",Y,[e.sessionPrepared||e.sessionError?h("",!0):(d(),c("div",G,[y(F,{class:"text-center"},{default:p((()=>[y(S,{justify:"center",align:"center",style:{"min-height":"50vh"}},{default:p((()=>[y(f,{cols:"12"},{default:p((()=>[y(w,{size:"70",width:"7",color:"primary",indeterminate:""}),s[5]||(s[5]=u("div",{class:"text-h5 mt-4"},"Preparing your study session...",-1)),s[6]||(s[6]=u("div",{class:"text-subtitle-1 mt-2"},"Getting your learning materials ready",-1))])),_:1})])),_:1})])),_:1})])),e.sessionError?(d(),c("div",K,[y(F,{class:"text-center"},{default:p((()=>[y(S,{justify:"center",align:"center",style:{"min-height":"50vh"}},{default:p((()=>[y(f,{cols:"12"},{default:p((()=>[y(b,{size:"64",color:"error"},{default:p((()=>s[7]||(s[7]=[g("mdi-alert-circle")]))),_:1}),s[9]||(s[9]=u("div",{class:"text-h5 mt-4 text-error"},"Session Preparation Failed",-1)),u("div",X,C(e.errorMessage||"There was a problem preparing your study session."),1),y(l,{color:"primary",class:"mt-6",onClick:e.refreshRoute},{default:p((()=>s[8]||(s[8]=[g("Try Again")]))),_:1},8,["onClick"])])),_:1})])),_:1})])),_:1})])):h("",!0),y(L,{"content-sources":e.sessionContentSources,"session-time-limit":e.sessionTimeLimit,user:e.user,"session-config":e.studySessionConfig,"data-layer":e.dataLayer,"get-view-component":e.getViewComponent,class:k({"hidden-session":!e.sessionPrepared}),onSessionFinished:e.handleSessionFinished,onSessionPrepared:e.handleSessionPrepared,onSessionError:e.handleSessionError},null,8,["content-sources","session-time-limit","user","session-config","data-layer","get-view-component","class","onSessionFinished","onSessionPrepared","onSessionError"])])):h("",!0)])):(d(),c("div",j,[y(a,{"initial-time-limit":e.sessionTimeLimit,onInitStudySession:s[0]||(s[0]=(s,t)=>e.initStudySession(s,t))},null,8,["initial-time-limit"])]))}],["__scopeId","data-v-dcbc1fde"]]);export{Z as default};
2
- //# sourceMappingURL=Study-B4tBks0X.js.map
@@ -1,2 +0,0 @@
1
- import{d as a,G as l,H as s,s as e,f as t,o as n,b as u,e as r,t as o}from"./index-PISHyq1I.js";const v=a({__name:"UserStats",setup(a){const v=l(null),i=l([]);return s((async()=>{v.value=await e();const a=await Promise.all([1,7,30].map((a=>v.value.getReviewsForcast(a))));i.value=a.map((a=>a.length))})),(a,l)=>(n(),t("div",null,[l[0]||(l[0]=u("h2",null,"Stats!",-1)),r(" One day: "+o(i.value[0])+" ",1),l[1]||(l[1]=u("br",null,null,-1)),r(" Seven day: "+o(i.value[1])+" ",1),l[2]||(l[2]=u("br",null,null,-1)),r(" Thirty Day: "+o(i.value[2]),1)]))}});export{v as default};
2
- //# sourceMappingURL=UserStats-rzVY5epq.js.map