2 lines
5.5 KiB
JavaScript
Executable File
2 lines
5.5 KiB
JavaScript
Executable File
"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[168],{11168:(e,t,i)=>{i.r(t),i.d(t,{default:()=>o});var s=i(78673);class o extends s.A{constructor(e){super(e);var t=e.orig;this.origElem=t,this.divid=t.id,this.children=this.origElem.childNodes,this.optionList=[],this.optsArray=[],this.comment=!1,this.origElem.hasAttribute("data-comment")&&(this.comment=!0),this.resultsViewer=this.origElem.getAttribute("data-results"),this.getQuestionText(),this.getOptionText(),this.renderPoll(),this.checkPollStorage(),this.caption="Poll",this.addCaption("runestone")}getQuestionText(){for(var e,t=0;t<this.children.length;t++)if("LI"==this.children[t].tagName){e=this.children[t];break}var i=e.outerHTML,s=this.origElem.innerHTML.split(i);this.question=s[0]}getOptionText(){for(var e=this,t=0;t<this.children.length;t++)"LI"==e.children[t].tagName&&e.optionList.push(e.children[t].innerHTML)}renderPoll(){this.containerDiv=document.createElement("div"),this.pollForm=document.createElement("form"),this.resultsDiv=document.createElement("div"),this.resultsDiv.classList.add("poll-results"),this.containerDiv.id=this.divid;const e=this.origElem.getAttribute("class");e&&this.containerDiv.classList.add(...e.split(" ").filter(Boolean)),this.pollForm.innerHTML=`<div class="exercise-statement">${this.question}</div>`,this.pollForm.id=this.divid+"_form",this.pollForm.method="get",this.pollForm.action="",this.pollForm.onsubmit=function(){return!1},this.pollFieldset=document.createElement("fieldset"),this.pollForm.appendChild(this.pollFieldset);for(var t=0;t<this.optionList.length;t++){let e=document.createElement("label");e.classList.add("poll-option"),e.innerHTML+=this.optionList[t];var i=document.createElement("input"),s=this.divid+"_opt_"+t;i.id=s,i.name=this.divid+"_group1",i.type="radio",i.value=t,i.classList.add("poll-choice-input"),i.addEventListener("click",this.submitPoll.bind(this)),e.prepend(i),this.pollFieldset.appendChild(e),this.optsArray.push(i)}this.comment&&this.renderTextField(),this.resultsDiv.id=this.divid+"_results",this.containerDiv.appendChild(this.pollForm),this.containerDiv.appendChild(this.resultsDiv),this.origElem.replaceWith(this.containerDiv),this.queueMathJax(this.containerDiv)}renderTextField(){this.textfield=document.createElement("input"),this.textfield.type="text",this.textfield.classList.add("form-control"),this.textfield.style.width="300px",this.textfield.name=this.divid+"_comment",this.textfield.placeholder="Any comments?",this.pollForm.appendChild(this.textfield),this.pollForm.appendChild(document.createElement("br"))}async submitPoll(){for(var e=null,t=0;t<this.optsArray.length;t++)if(this.optsArray[t].checked){e=this.optsArray[t].value;break}if(null!==e){var i="";this.comment&&(i=this.textfield.value);var s={event:"poll",act:""!==i?e+":"+i:e,div_id:this.divid};if(this.logBookEvent(s),localStorage.setItem(this.divid,"true"),document.getElementById(`${this.divid}_sent`))document.getElementById(`${this.divid}_sent`).innerHTML=`<strong>${eBookConfig.useRunestoneServices?"Only Your last reponse is recorded":"Thanks, your answers are not recorded"}</strong>`;else{const e=document.createElement("span");e.id=`${this.divid}_sent`,e.innerHTML=`<strong>${eBookConfig.useRunestoneServices?"Thanks, your response has been recorded":"Thanks, your answers are not recorded"}</strong>`,this.pollForm.appendChild(e)}if("all"===this.resultsViewer){var o={};o.div_id=this.divid,o.course=eBookConfig.course;try{const e=new URLSearchParams(o),t=await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${e.toString()}`),i=await t.json();this.showPollResults(i)}catch(e){this.indicate_component_ready()}}}}showPollResults(e){var t=(e=e.detail).total,i=e.opt_counts,s=(e.div_id,e.my_vote);if(s>-1&&(this.optsArray[s].checked=!0),"all"===this.resultsViewer&&"true"===localStorage.getItem(this.divid)||eBookConfig.isInstructor){this.resultsDiv.innerHTML=`<b>Results:</b> ${t} responses <br><br>`;var o=document.createElement("div");o.classList.add("results-container");for(var n=0;n<this.optionList.length;n++){var r,l;i[n]>0?l=(r=i[n])/t*100:(r=0,l=0);var d=r+" ("+Math.round(10*l)/10+"%)";let e=document.createElement("div");e.className="progresscounter",e.innerText=`${n+1}. `;let s=document.createElement("div"),a="";a=l>10?`<div class='progress'><div class='progress-bar progress-bar-success'style="width: ${l}%; min-width: 2em;"><span class='poll-text'>`+d+"</span></div></div>":`<div class='progress'><div class='progress-bar progress-bar-success'style="width: ${l}%; min-width: 2em;"></div><span class='poll-text' style='margin: 0 0 0 10px;'>`+d+"</span></div>",s.innerHTML=a,o.appendChild(e),o.appendChild(s)}this.resultsDiv.appendChild(o)}this.indicate_component_ready()}disableOptions(){}async checkPollStorage(){if(localStorage.length>0){var e={};e.div_id=this.divid,e.course=eBookConfig.course;try{const t=new URLSearchParams(e),i=await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${t.toString()}`),s=await i.json();this.showPollResults(s)}catch(e){this.indicate_component_ready()}}else this.indicate_component_ready()}}document.addEventListener("runestone:login-complete",(function(){document.querySelectorAll("[data-component=poll]").forEach((function(e,t){try{window.componentMap[e.id]=new o({orig:e})}catch(t){console.log(`Error rendering Poll Problem ${e.id}\n Details: ${t}`),console.log(t.stack)}}))})),void 0===window.component_factory&&(window.component_factory={}),window.component_factory.poll=function(e){return new o(e)}}}]);
|
|
//# sourceMappingURL=168.fe63e6dec2d06468.js.map
|