1var T=Object.defineProperty,U=Object.defineProperties;var O=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var N=(e,s,l)=>s in e?T(e,s,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[s]=l,V=(e,s)=>{for(var l in s||(s={}))H.call(s,l)&&N(e,l,s[l]);if(B)for(var l of B(s))q.call(s,l)&&N(e,l,s[l]);return e},E=(e,s)=>U(e,O(s));var M=(e,s,l)=>new Promise((y,m)=>{var a=n=>{try{u(l.next(n))}catch(p){m(p)}},_=n=>{try{u(l.throw(n))}catch(p){m(p)}},u=n=>n.done?y(n.value):Promise.resolve(n.value).then(a,_);u((l=l.apply(e,s)).next())});import{C as L,r as S,S as J}from"./chunk.BKgYjVY8P_ml.js";import{c as j,J as F,N as G,l as Q,aA as C,b as I,b7 as W,q as $,aK as X,g as Y}from"./entry.BuXKX4_t9gqW.js";import{E as Z}from"./chunk.ixl249InQFa6.js";import{k as ee,w as se,q as v,H as w,z as f,u as t,y as r,Q as h,s as x,x as te,v as i,r as R,c as D,B as k,J as le,K as ne}from"./chunk.CaKkpqnfqRp7.js";import{u as ae,S as P,t as c,P as z,I as oe,f as de,a as A}from"./chunk.CCfNaIAVhYqF.js";import"./chunk.DMiigLJ6-phQ.js";import"./chunk.Bfez4GpujW5L.js";import"./chunk.D7u4Z2KhBOI5.js";import"./chunk.vKmSb7iagUEM.js";import"./chunk.D0oM7fm6J3rd.js";import"./chunk.C9Cw7x6sFZ90.js";const ie={class:"ResetResumeKeysModal__title"},re={class:"ResetResumeKeysModal__text"},ue={key:1},me={class:"ResetResumeKeysModal__footer"},ce=ee({__name:"ResetResumeKeysModal",props:{students:{}},emits:["closeModal","keysReset"],setup(e,{emit:s}){const l=ae(),y=s,m=R(!1),a=R(!1),_=R(!1),u=R(""),n=R([]),p=D(()=>e.students.map(d=>({label:C(d),value:d.id}))),g=D(()=>n.value.length===0?!0:e.students.filter(o=>n.value.includes(o.id)).every(o=>o.email));se(g,d=>{d||(m.value=!1)});function K(){return M(this,null,function*(){a.value=!0;try{const d=yield S.resetMany(n.value);m.value&&(yield S.mailMany(n.value)),u.value="";const o=`${n.value.length} ${c("resume keys have been reset")}`;l.add({severity:"success",summary:o}),y("keysReset",d)}catch(d){u.value=c("An error occurred, please try again. If the problem remains, try to reload Exam.net or use a different browser.")}n.value=[],a.value=!1})}return(d,o)=>(v(),w(Q,{size:"md",class:"ResetResumeKeysModal",onVisible:o[4]||(o[4]=b=>_.value=!0)},{title:f(()=>[r(oe,{svg:h(de),class:"ResetResumeKeysModal__close-icon","data-dismiss":"modal",role:"button",width:"var(--width-3)",color:"var(--gray-700)","aria-label":"Close modal",onClick:o[0]||(o[0]=b=>y("closeModal"))},null,8,["svg"]),t("h1",ie,i(h(c)("Reset resume keys")),1),t("p",re,i(h(c)("If your students' resume keys have been compromised, you can choose to reset them. This will generate new keys which will overwrite the old ones.")),1)]),body:f(()=>[e.students.length===0?(v(),w(j,{key:0,class:"ResetResumeKeysModal__edge-case-notice",title:h(c)("No students"),message:h(c)("Conduct this exam with your students to view and reset individual keys."),imageUrl:"https://exam.net/cdn/icons/64/outline/student-hat.svg"},null,8,["title","message"])):(v(),x("div",ue,[r(L,{modelValue:n.value,"onUpdate:modelValue":o[1]||(o[1]=b=>n.value=b),defaultOpen:_.value,options:p.value,selectAllLabel:h(c)("Reset all")},null,8,["modelValue","defaultOpen","options","selectAllLabel"]),r(F,{modelValue:m.value,"onUpdate:modelValue":o[2]||(o[2]=b=>m.value=b),class:"ResetResumeKeysModal__sendNewKeysCheckbox",tooltip:g.value?"":h(c)("All selected students must have an email address to be able to send them the new keys"),disabled:!g.value,label:h(c)("Send the new keys to the students by email")},null,8,["modelValue","tooltip","disabled","label"])])),u.value?(v(),w(G,{key:2,mode:"secondary",text:u.value},null,8,["text"])):te("",!0)]),footer:f(()=>[t("div",me,[r(P,{label:h(c)("Cancel"),"data-dismiss":"modal",onClick:o[3]||(o[3]=b=>y("closeModal"))},null,8,["label"]),r(z,{severity:"danger",label:h(c)("Reset"),loading:a.value,disabled:n.value.length===0,onClick:K},null,8,["label","loading","disabled"])])]),_:1}))}}),he=A(ce,[["__scopeId","data-v-904347c9"]]),ye={components:{SendResumeKeysModal:J,ResetResumeKeysModal:he,PrimaryButton:z,SecondaryButton:P},props:{exam:{type:Object,required:!0}},data(){return{goToUrl:Y,Student:X,replacingKey:!1,selectedStudent:null,examModel:new Z(this.exam),students:this.exam.students}},computed:{studentsWithoutDemo(){return this.students.filter(e=>Number(e.is_demo)!==1)},sortedStudentsWithoutDemo(){return W(this.studentsWithoutDemo)},chosenKey(){return this.selectedStudent?`${this.exam.examkey}#${this.selectedStudent.resume_pin}`:""},chosenName(){return this.selectedStudent?C(this.selectedStudent):""}},methods:{nameByPreference:C,handleKeysReset(e){this.closeModal("resetResumeKeysModal"),this.students=this.students.map(s=>{const l=e.find(y=>Number(y.id)===Number(s.id));return l?E(V({},s),{resume_pin:l.resume_pin}):s})},closeModal(e){$.hide(this.$refs[e])},showModal(e){$.show(this.$refs[e])},print(){I.$emit("print-show"),this.examModel.fetchResults(null,{forceNonAnonymous:!0}).then(e=>{I.$emit("print-data",{type:"resume",students:W(e),examName:this.exam.name,examkey:this.exam.examkey,noDouble:!0})})},showKey(e){this.selectedStudent=e,this.showModal("keyModal")},regenerate(){return M(this,null,function*(){this.replacingKey=!0;try{const e=yield S.reset(this.selectedStudent.id);this.replacingKey=!1,this.selectedStudent.resume_pin=e.resume_pin}catch(e){console.error(e)}})}}},_e={class:"ResumeKeys"},pe={class:"text-center"},ve={"data-testid":"key"},fe={class:"text-center",style:{"margin-right":"-15px"}},be={style:{display:"flex",width:"100%","max-width":"none"}},ke={class:"keys text-center"},ge={class:"ResumeKeys__handle__button-container"},Re=["onClick"],xe={role:"button",style:{"text-decoration":"underline",cursor:"pointer","font-size":"14px"}},Ke={class:"instructions"},Me={class:"text-center"},we={style:{"font-size":"14px","text-align":"center"}},Se={class:"text-center"},Ce={style:{"font-size":"14px"}},Be=["href"];function Ne(e,s,l,y,m,a){const _=k("PrimaryButton"),u=k("SecondaryButton"),n=k("ExamModal"),p=k("ElSection"),g=k("SendResumeKeysModal"),K=k("ResetResumeKeysModal");return v(),x("div",_e,[r(_,{size:"large",style:{"margin-top":"20px","margin-bottom":"-20px"},label:e.__("Back to my exams"),onClick:s[0]||(s[0]=d=>m.goToUrl("/admin/exams"))},null,8,["label"]),r(n,{ref:"keyModal",size:"md",class:"KeyModal","data-testid":"key-modal"},{title:f(()=>[t("h1",null,i(a.chosenName),1)]),body:f(()=>[t("div",pe,[t("h1",ve,i(a.chosenKey),1)])]),footer:f(()=>[t("div",fe,[r(_,{label:m.replacingKey?e.__("Replacing key ..."):e.__("Byt ut nyckeln (gör nuvarande nyckel ogiltig)"),disabled:m.replacingKey,onClick:a.regenerate},null,8,["label","disabled","onClick"]),r(u,{label:e.__("Close"),"data-dismiss":"modal"},null,8,["label"])])]),_:1},512),r(p,{style:{"margin-top":"40px"},wide:"",class:"all",title:e.__("Individual keys to resume an exam"),help:!1},{default:f(()=>[t("div",be,[t("div",ke,[t("h3",null,i(e.__("Handle resume keys")),1),t("div",ge,[r(_,{class:"ResumeKeys__handle__button",label:e.__("Send"),fullWidth:"",onClick:s[1]||(s[1]=d=>a.showModal("sendResumeKeysModal"))},null,8,["label"]),r(u,{class:"ResumeKeys__handle__button",label:e.__("Reset"),fullWidth:"",onClick:s[2]||(s[2]=d=>a.showModal("resetResumeKeysModal"))},null,8,["label"]),r(u,{label:e.__("Print"),class:"ResumeKeys__handle__button",fullWidth:"",onClick:a.print},null,8,["label","onClick"])]),t("h4",null,i(e.__("View individual keys")),1),(v(!0),x(le,null,ne(a.sortedStudentsWithoutDemo,d=>(v(),x("p",{key:d.id,style:{margin:"5px"},onClick:o=>a.showKey(d)},[t("span",xe,i(a.nameByPreference(d)),1)],8,Re))),128))]),t("div",Ke,[t("h3",Me,i(e.__("How it works")),1),t("p",we,i(e.__("In the event of a student having to switch device during an exam, the student may use the individual exam key to resume the exam.")),1),s[3]||(s[3]=t("br",null,null,-1)),t("h4",
1Se,i(e.__("If you plan an exam that covers several sessions")),1),t("ol",null,[t("li",null,i(e.__("The students do the exam as usual in the first session, and submit (as if completed) at the end of that session.")),1),t("li",null,i(e.__("On resuming the exam in the next session, give the students their individual exam keys. Using this key, the student will be able to continue working.")),1),t("li",null,i(e.__("The individual keys are valid for single use only.")),1)]),t("p",Ce,i(e.__('Vi har även en ny funktion som gör att om läraren kräver in "epost" av eleverna vid första tillfället (ställs in när provet skapas), så kan dessa koder skickas ut den vägen.')),1),t("a",{href:e.__("https://support.exam.net/s/article/conduct-exams-over-several-sessions-resume-exam?language=en_US"),target:"_support"},i(e.__("See our support pages about this.")),9,Be)])])]),_:1},8,["title"]),r(g,{ref:"sendResumeKeysModal",examId:l.exam.id,students:a.sortedStudentsWithoutDemo},null,8,["examId","students"]),r(K,{ref:"resetResumeKeysModal",students:a.sortedStudentsWithoutDemo,onKeysReset:a.handleKeysReset},null,8,["students","onKeysReset"])])}const He=A(ye,[["render",Ne],["__scopeId","data-v-fadc3035"]]);export{He as default}; 2//# sourceMappingURL=chunk.DRguhrWTcCLE.js.map
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.