{"version":3,"file":"280.7c50ce8ed928e19e.bundle.js","mappings":"4IAoBA,MAAMA,UAAiB,IACnBC,YAAYC,GACRC,MAAMD,GACN,IAAIE,EAAOF,EAAKE,KAChBC,KAAKC,SAAWF,EAChBC,KAAKE,MAAQH,EAAKI,GAClBC,KAAKC,MAAQ,GACbL,KAAKM,MAAQN,KAAKC,SAASM,QAAQC,WAGnC,IAAIC,EAAOC,SAASC,cAAc,UAClCF,EAAKG,KAAO,SACZH,EAAKI,UAAUC,IAAI,MAAO,eAC1BL,EAAKM,UAAY,eACjBN,EAAKO,QAAUhB,KAAKiB,UAAUC,KAAKlB,MACnBU,SAASS,eAAe,mBAC9BC,YAAYX,GAK1BY,mBAEI,GAAIC,YAAYC,qBAAsB,CAElC,IAAIC,EAAU,IAAIC,QAAQ,mCAAoC,CAC1DC,OAAQ,MACRC,QAAS3B,KAAK4B,cAElB,IACI,IAAIC,QAAiBC,MAAMN,GAC3B,IAAKK,EAASE,GACV,MAAM,IAAIC,MAAM,gCAEpBhC,KAAKiC,kBAAoBJ,EAASK,OACpC,MAAOC,GACDnC,KAAKoC,SACLC,MAAM,mDAAmDF,KAE7DG,QAAQC,IAAI,UAAUJ,WAI1BnC,KAAKiC,YAAc,CACfO,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,UAGZ,IAAIC,EAASnC,SAASS,eAAe,oBACrC,IAAK,IAAK2B,EAAKC,KAASC,OAAOC,QAAQjD,KAAKiC,aAAc,CACtD,IAAIiB,EAAMxC,SAASC,cAAc,UACjCuC,EAAIC,MAAQL,EACZI,EAAInC,UAAYf,KAAKiC,YAAYa,GACjCD,EAAOzB,YAAY8B,GAGvBE,EAAE,8BAA8BC,QAAQ,CACpCC,YAAa,8BACbC,YAAY,EACZC,uBAAwBxD,KAAKM,QAKrCe,kBAEI,IAAIoC,EAAS/C,SAASS,eAAe,oBACjCd,EAAQ,GACZ,IAAK,IAAIqD,KAAWD,EAAOE,gBACvBtD,EAAMuD,KAAKF,EAAQP,OAGvB,IAAIU,EAAWvC,YAAYuC,SAI3B,GAHIA,IAAaxD,EAAMyD,SAASD,IAC5BxD,EAAMuD,KAAKC,GAEXxD,EAAM0D,IAAM/D,KAAKM,MACjB+B,MAAM,8BAA8BrC,KAAKM,iCAD7C,CAIAN,KAAKgE,aAAa,CACdC,MAAO,cACPC,IAAK7D,EAAM8D,KAAK,KAChBC,OAAQC,OAAOC,SAASC,WAE5B,IAAK,IAAIb,KAAWrD,EAChB,IAAK,IAAImE,KAAYH,OAAOI,cACxB,IACInC,QAAQC,IAAI,GAAGmB,KAAWc,WACpBA,EAASE,iBAAiBhB,GAClC,MAAMvB,GACJG,QAAQC,IAAI,oBAAoBiC,OAAcrC,KAK1DnC,KAAKgE,aAAa,CACdC,MAAO,YACPC,IAAK7D,EAAM8D,KAAK,KAChBC,OAAQC,OAAOC,SAASC,aAOpCnB,EAAE1C,UAAUiE,GAAG,4BAA4BtD,iBACvC,IAAIuD,EAAKlE,SAASmE,iBAAiB,6BACnC,GAAID,EAAGE,OAAS,EAEZ,YADAzC,MAAM,6CAGV,IAAI0C,EAAYH,EAAG,GACnB,IACI,IAAII,EAAa,IAAIrF,EAAS,CAAEI,KAAMgF,UAChCC,EAAWC,aACnB,MAAOC,GACL5C,QAAQC,IAAI,4BAA4BwC,EAAU5E,MAClDmC,QAAQC,IAAI,WAAW2C","sources":["webpack://WebComponents/./runestone/groupsub/js/groupsub.js"],"sourcesContent":["/*==========================================\n======= Master groupsub.js ========\n============================================\n=== This file contains the JS for ===\n=== the Runestone reval component. ===\n============================================\n=== Created by ===\n=== Isaiah Mayerchak ===\n=== 06/12/15 ===\n==========================================*/\n\n\nimport RunestoneBase from \"../../common/js/runestonebase\";\nimport \"../css/groupsub.css\";\nimport \"select2/dist/js/select2.min.js\";\nimport \"select2/dist/css/select2.css\";\n\nvar pageReveal;\n\n// Define Reveal object\nclass GroupSub extends RunestoneBase {\n constructor(opts) {\n super(opts);\n var orig = opts.orig; // entire
element that will be replaced by new HTML\n this.origElem = orig;\n this.divid = orig.id;\n self.group = []\n this.limit = this.origElem.dataset.size_limit;\n\n // Create submit button\n let butt = document.createElement(\"button\");\n butt.type = \"button\";\n butt.classList.add(\"btn\", \"btn-success\")\n butt.innerHTML = \"Submit Group\"\n butt.onclick = this.submitAll.bind(this);\n let container = document.getElementById(\"groupsub_button\")\n container.appendChild(butt);\n\n\n }\n\n async initialize() {\n // get the classlist to populate\n if (eBookConfig.useRunestoneServices) {\n // get classlist from admin/course_students\n let request = new Request(\"/runestone/admin/course_students\", {\n method: \"GET\",\n headers: this.jsonHeaders,\n });\n try {\n let response = await fetch(request);\n if (!response.ok) {\n throw new Error(\"Failed to save the log entry\");\n }\n this.studentList = await response.json();\n } catch (e) {\n if (this.isTimed) {\n alert(`Error: Your action was not saved! The error was ${e}`);\n }\n console.log(`Error: ${e}`);\n }\n\n } else {\n this.studentList = {\n s1: \"User 1\",\n s2: \"User 2\",\n s3: \"User 3\",\n s4: \"User 4\",\n s5: \"User 5\",\n }\n }\n let select = document.getElementById(\"assignment_group\");\n for (let [sid, name] of Object.entries(this.studentList)) {\n let opt = document.createElement(\"option\");\n opt.value = sid;\n opt.innerHTML = this.studentList[sid];\n select.appendChild(opt);\n }\n // Make the select element searchable with multiple selections\n $('.assignment_partner_select').select2({\n placeholder: \"Select up to 4 team members\",\n allowClear: true,\n maximumSelectionLength: this.limit\n });\n\n }\n\n async submitAll() {\n // find all components on the page and submit them for all group members\n let picker = document.getElementById(\"assignment_group\")\n let group = []\n for (let student of picker.selectedOptions) {\n group.push(student.value);\n }\n // If the leader forgets to add themselves, add them here.\n let username = eBookConfig.username;\n if (username && !group.includes(username)) {\n group.push(username)\n }\n if (group.len > this.limit) {\n alert(`You may not have more than ${this.limit} students in a group`);\n return\n }\n this.logBookEvent({\n event: \"group_start\",\n act: group.join(\",\"),\n div_id: window.location.pathname,\n });\n for (let student of group) {\n for (let question of window.allComponents) {\n try{\n console.log(`${student} ${question}`)\n await question.logCurrentAnswer(student)\n } catch(e) {\n console.log(`failed to submit ${question} : ${e}`)\n }\n }\n }\n\n this.logBookEvent({\n event: \"group_end\",\n act: group.join(\",\"),\n div_id: window.location.pathname,\n });\n }\n\n}\n\n\n$(document).on(\"runestone:login-complete\", async function () {\n let gs = document.querySelectorAll(\"[data-component=groupsub]\");\n if (gs.length > 1) {\n alert(\"Only one Group Submit is allowed per page\")\n return;\n }\n let gsElement = gs[0];\n try {\n var pageReveal = new GroupSub({ orig: gsElement });\n await pageReveal.initialize();\n } catch (err) {\n console.log(`Error rendering GroupSub ${gsElement.id}`);\n console.log(`Details ${err}`);\n }\n});\n\n"],"names":["GroupSub","constructor","opts","super","orig","this","origElem","divid","id","self","group","limit","dataset","size_limit","butt","document","createElement","type","classList","add","innerHTML","onclick","submitAll","bind","getElementById","appendChild","async","eBookConfig","useRunestoneServices","request","Request","method","headers","jsonHeaders","response","fetch","ok","Error","studentList","json","e","isTimed","alert","console","log","s1","s2","s3","s4","s5","select","sid","name","Object","entries","opt","value","$","select2","placeholder","allowClear","maximumSelectionLength","picker","student","selectedOptions","push","username","includes","len","logBookEvent","event","act","join","div_id","window","location","pathname","question","allComponents","logCurrentAnswer","on","gs","querySelectorAll","length","gsElement","pageReveal","initialize","err"],"sourceRoot":""}