{"version":3,"file":"280.js","mappings":"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","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 this.isPretext = document.body.classList.contains(\"pretext\");\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 var container;\n if (this.isPretext) {\n container = opts.orig.querySelector(\".groupsub_button\");\n\n } else {\n container = document.getElementById(\"groupsub_button\")\n }\n\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(\"/ns/auth/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 get the list of students\");\n }\n if (response.redirected) {\n alert(\"You must be logged in to use this feature\");\n return;\n }\n let resp = await response.json();\n this.studentList = resp.detail.students;\n } catch (e) {\n if (this.isTimed) {\n alert(`Error: Failed to get the list of students. The error was ${e}`);\n }\n console.log(`Error: ${e}`);\n this.studentList = {\n failed: \"Failed to load students - logout and back in\",\n }\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 var select;\n if (this.isPretext) {\n select = this.origElem.querySelector(\".assignment_partner_select\");\n } else {\n select = document.getElementById(\"assignment_group\");\n }\n this.picker = select;\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\n let group = []\n for (let student of this.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 var componentList = [];\n if (this.isPretext) {\n let container = this.origElem.closest(\"section.groupwork\");\n for (let id of Object.keys(componentMap)) {\n if (container.querySelector(`#${id}`)) {\n componentList.push(componentMap[id]);\n }\n }\n } else {\n componentList = window.allComponents;\n }\n for (let student of group) {\n for (let question of componentList) {\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","isPretext","document","body","classList","contains","butt","createElement","type","add","innerHTML","onclick","submitAll","bind","querySelector","getElementById","appendChild","initialize","eBookConfig","useRunestoneServices","request","Request","method","headers","jsonHeaders","response","fetch","ok","Error","redirected","alert","resp","json","studentList","detail","students","e","isTimed","console","log","failed","s1","s2","s3","s4","s5","select","picker","sid","name","Object","entries","opt","value","$","select2","placeholder","allowClear","maximumSelectionLength","student","selectedOptions","push","username","includes","len","logBookEvent","event","act","join","div_id","window","location","pathname","componentList","container","closest","keys","componentMap","allComponents","question","logCurrentAnswer","on","async","gs","querySelectorAll","length","gsElement","pageReveal","err"],"sourceRoot":""}