-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathquizzlestick.min.js
30 lines (30 loc) · 15.5 KB
/
quizzlestick.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(function(d){var b={quiz:function(b){return this.each(function(){var c=d(this),a=b||c.data("quizzlestick"),g,f,k,p,j,q,m,r,n,s,a=d.extend(!0,{},d.fn.quizzlestick.defaults,a);c.data({quizzlestick:a,initialised:!0});a.id&&a.api.send({id:a.id,action:"config"},a);c.addClass("quizzlestick quizzlestick-"+a.type+" "+a.classname).on("start",a.onstart).on("complete",a.oncomplete).on("answer",a.onanswer).on("correct",a.oncorrect).on("incorrect",a.onincorrect).on("timer",a.ontimer).on("next",a.onnext).on("prev",
a.onprev).on("ready",a.onready).on("tap click",".quizzlestick-start",function(d){d.preventDefault();!c.data("started")&&!c.data("complete")&&(c.data("started",!0),s=setInterval(function(){a.state.time+=1E3;p.html(c.fumanchu("{{templates.timer}}",a));c.trigger("timer",[a.state.time,a]);a.state.time>=a.timelimit&&(a.mustanswer=!1,c.find(".quizzlestick-finish").click())},1E3),q.addClass("quizzlestick-hidden").hide(),g.show().removeClass("quizzlestick-hidden"),c.trigger("start",[s,a]))}).on("tap click",
".quizzlestick-check",function(b){b.preventDefault();if(!c.data("complete")){b=c.find(".quizzlestick-current");var e=b.find(".quizzlestick-answer"),g=b.find(".quizzlestick-result"),j=b.find(".quizzlestick-selected"),l=b.data("id"),h=a.questions[l];b.data("answered")||(m.addClass("quizzlestick-hidden").hide(),b.addClass("quizzlestick-answered").data("answered",!0),a.state.question=l,h.total++,a.state.answers[l]||(a.state.answers[l]=[]),j.each(function(){var b=d(this),e=b.data("id"),f=h.answers[e];
a.state.answers[l].push(e);f.total++;b.find(".quizzlestick-answer-total").html(f.total);f.correct?(a.state.points+=parseInt(f.points,10),"which"!==a.type&&(b.addClass("quizzlestick-correct"),f.resultcorrect&&g.append(c.fumanchu(f.resultcorrect,f)))):"poll"!==a.type&&(b.addClass("quizzlestick-incorrect"),f.resultincorrect&&g.append(c.fumanchu(f.resultincorrect,f)))}),j=a.state.answers[l].sort().join("")==h.correct.sort().join(""),e.each(function(c){0<=d.inArray(c,h.correct)&&("which"!==a.type&&"poll"!==
a.type)&&d(this).addClass("quizzlestick-correct")}),"single"===a.type||"multi"===a.type?j?(b.addClass("quizzlestick-question-correct"),h.resultcorrect?g.append(c.fumanchu(h.resultcorrect,h,a)):h.result&&g.append(c.fumanchu(h.result,h,a)),g.prepend(c.fumanchu(a.templates.correct,h,a)),c.trigger("correct",[j,b,h,a])):(b.addClass("quizzlestick-question-incorrect"),h.resultcorrect?g.append(c.fumanchu(h.resultincorrect,h,a)):h.result&&g.append(c.fumanchu(h.result,h,a)),g.prepend(c.fumanchu(a.templates.incorrect,
h,a)),c.trigger("incorrect",[j,b,h,a])):"which"!==a.type&&"poll"===a.type&&(d.each(h.answers,function(c){h.answers[c].template=a.templates.pollresult}),g.append(c.fumanchu(a.templates.pollresults,h,a))),""!==d.trim(g.html())&&g.removeClass("quizzlestick-hidden"),k.html(c.fumanchu("{{templates.progress}}",a)),c.trigger("answer",[j,b,h,a]),a.api.send({id:a.id,action:"answer",question:l,correct:j,state:a.state},a),a.helpers.numanswers({},a)>=f.length?n.click():a.nextdelay?setTimeout(function(){r.click()},
a.nextdelay):a.mustanswer&&1<f.length&&r.add(b.find(".quizzlestick-next")).show().removeClass("quizzlestick-hidden"))}}).on("tap click",".quizzlestick-next",function(d){d.preventDefault();if(!c.data("complete"))if(a.helpers.numanswers({},a)>=f.length)n.click();else{d=c.find(".quizzlestick-current");var b=d.next(),e=d.data("id");f.removeClass("quizzlestick-question-prev quizzlestick-question-next quizzlestick-current");d.removeClass("quizzlestick-current").addClass("quizzlestick-question-prev");a.state.question<
f.length&&(a.state.question=e+1,k.html(c.fumanchu("{{templates.progress}}",a)),b.addClass("quizzlestick-current").next().addClass("quizzlestick-question-next"),c.trigger("next",[b,f,a]))}}).on("tap click",".quizzlestick-prev",function(d){d.preventDefault();if(!c.data("complete"))if(a.helpers.numanswers({},a)>=f.length)n.click();else{d=c.find(".quizzlestick-current");var b=d.prev(),e=d.data("id");f.removeClass("quizzlestick-question-prev quizzlestick-question-next quizzlestick-current");d.removeClass("quizzlestick-current quizzlestick-question-prev").addClass("quizzlestick-question-next");
0<a.state.question&&(confid.state.question=e-1,k.html(c.fumanchu("{{templates.progress}}",a)),b.addClass("quizzlestick-current").prev().addClass("quizzlestick-question-prev"),c.trigger("prev",[b,f,a]))}}).on("tap click",".quizzlestick-answer",function(b){b.preventDefault();if(!c.data("complete")){b=d(this);var e=d(this).parents(".quizzlestick-question"),g=e.find(".quizzlestick-answer"),j=e.data("id"),l=b.data("id"),j=a.questions[j],l=j.answers[l];if(!e.data("answered")){f.removeClass("quizzlestick-current quizzlestick-question-next quizzlestick-question-prev");
e.addClass("quizzlestick-current");e.next().addClass("quizzlestick-question-next");e.prev().addClass("quizzlestick-question-prev");"multi"===a.type&&(b.toggleClass("quizzlestick-selected"),g.filter(".quizzlestick-selected").length?m.removeClass("quizzlestick-hidden quizzlestick-disabled"):m.addClass("quizzlestick-disabled"));if("single"===a.type||"poll"===a.type||"which"===a.type)b.addClass("quizzlestick-selected"),m.click();"function"===d.type(l.onselect)&&l.onselect.apply(this,[l,e,j]);c.trigger("select",
[l,e,j,a]);b.trigger("select",[l,e,j,a])}}}).on("tap click",".quizzlestick-finish",function(b){b.preventDefault();if(!c.data("complete")&&(k.html(c.fumanchu("{{templates.progress}}",a)),a.helpers.numanswers({},a)>=f.length||!a.mustanswer))a.timelimit&&clearInterval(s),c.addClass("quizzlestick-complete").data("complete",!0),c.find(".quizzlestick-next").addClass("quizzlestick-hidden"),c.find(".quizzlestick-prev").addClass("quizzlestick-hidden"),f.removeClass("quizzlestick-current quizzlestick-question-next"),
j.html(c.fumanchu("{{templates.result}}",a)).show().removeClass("quizzlestick-hidden"),setTimeout(function(){d("html,body").animate({scrollTop:j.offset().top-30},1E3)},300),a.api.send({id:a.id,action:"complete",state:a.state},a),c.trigger("complete",[a])});d.each(a.questions,function(c,b){var e=0;b=d.extend(!0,{id:c},d.fn.quizzlestick.defaults.questiondefaults,b);b.template||(b.template=a.templates.question);d.each(b.answers,function(c,g){g=d.extend(!0,{id:c},d.fn.quizzlestick.defaults.answerdefaults,
g);g.template||(g.template=a.templates.answer);"which"===a.type&&(g.correct=!0);"poll"===a.type&&(g.correct=!1,g.points=0);g.correct&&(b.correct.push(c),a.state.poll=!1);g.correct&&(0>=parseInt(g.points,10)&&"which"!==a.type)&&(g.points=1);"multi"===a.type&&g.correct&&(a.state.maxpoints+=parseInt(g.points,10));if(("single"===a.type||"which"===a.type)&&g.points>e)e=parseInt(g.points,10);b.answers[c]=g});if(("single"===a.type||"which"===a.type)&&e)a.state.maxpoints+=parseInt(e,10);a.questions[c]=b});
0<a.state.maxpoints&&(a.state.poll=!1);if(a.questions){c.html(c.fumanchu(a.templates.scaffold,a));g=c.find(".quizzlestick-questions");f=c.find(".quizzlestick-question");k=c.find(".quizzlestick-progress");p=c.find(".quizzlestick-timer");j=c.find(".quizzlestick-result-final");q=c.find(".quizzlestick-start-screen");m=c.find(".quizzlestick-check").eq(0);r=c.find(".quizzlestick-next").eq(0);c.find(".quizzlestick-prev").eq(0);n=c.find(".quizzlestick-finish").eq(0);var t=0,u=0;d.each(a.questions,function(a,
c){f.eq(t).attr("data-id",a).data("id",a);d.each(c.answers,function(a){f.eq(t).find(".quizzlestick-answer").eq(u++).attr("data-id",a).data("id",a)});u=0;t++});j.hide();2>f.length&&k.remove();parseInt(a.timelimit,10)?g.hide().addClass("quizzlestick-hidden"):(p.remove(),q.remove());"multi"!==a.type&&c.find(".quizzlestick-check").hide();"which"===a.type&&(a.nextdelay=a.nextdelay||500);a.mustanswer&&(c.find(".quizzlestick-next").hide(),c.find(".quizzlestick-prev").hide(),c.find(".quizzlestick-finish").hide());
f.eq(a.state.question).addClass("quizzlestick-current");f.eq(a.state.question+1).addClass("quizzlestick-question-next")}c.trigger("ready",[a]);return c})},complete:function(){d(this).find(".quizzlestick-next").eq(-1).click();return this},next:function(){d(this).find(".quizzlestick-question-current .quizzlestick-next").click();return this},prev:function(){d(this).find(".quizzlestick-question-current .quizzlestick-prev").click();return this}};d.fn.quizzlestick=function(e){if(b[e])return b[e].apply(this,
Array.prototype.slice.call(arguments,1));if("object"===typeof e||!e)return b.quiz.apply(this,arguments);d.error("Method "+e+" does not exist on jQuery.quizzlestick");return this};d.fn.quizzlestick.defaults={classname:"",type:"single",id:"",title:"",description:"",timelimit:0,nextdelay:0,state:{question:0,time:0,points:0,maxpoints:0,answers:[],poll:!0},mustanswer:!0,player:function(){},playonce:!1,order:"normal",maxquestions:0,questions:[],results:[],onstart:d.noop,oncomplete:d.noop,onselect:d.noop,
onanswer:d.noop,oncorrect:d.noop,onincorrect:d.noop,ontimer:d.noop,onnext:d.noop,onprev:d.noop,onsend:d.noop,onready:d.noop,questiondefaults:{question:"",answers:[],onanswer:null,oncorrect:null,onincorrect:null,result:"",resultcorrect:"",resultincorrect:"",correct:[],template:!1,total:0,friends:[]},answerdefaults:{answer:"",correct:!1,points:0,onselect:null,result:"",resultcorrect:"",resultincorrect:"",template:!1,total:0,friends:[]},templates:{scaffold:'\t\t\t\t<div class="quizzlestick-description">\t\t\t\t\t{{templates.description}}\t\t\t\t</div>\t\t\t\t<div class="quizzlestick-progress">\t\t\t\t\t{{templates.progress}}\t\t\t\t</div>\t\t\t\t<div class="quizzlestick-timer">\t\t\t\t\t{{templates.timer}}\t\t\t\t</div>\t\t\t\t<div class="quizzlestick-start-screen">\t\t\t\t\t{{templates.timerstart}}\t\t\t\t</div>\t\t\t\t<ol class="quizzlestick-questions">\t\t\t\t\t{{templates.questions}}\t\t\t\t</ol>\t\t\t\t{{templates.toolbar}}\t\t\t\t<div class="quizzlestick-result quizzlestick-result-final quizzlestick-hidden">\t\t\t\t\t{{templates.result}}\t\t\t\t</div>\t\t\t',
description:"\t\t\t\t{{description}}\t\t\t",progress:'\t\t\t\tQuestion <span class="quizzlestick-current-num">{{helpers.currentquestion}}</span> \t\t\t\tof <span class="quizzlestick-total">{{helpers.numquestions}}</span>\t\t\t',timer:'\t\t\t\t<span class="quizzlestick-timer-time">{{helpers.remainingtime}}</span>\t\t\t\t<div class="quizzlestick-timer-progress">\t\t\t\t\t<div class="quizzlestick-timer-progress-bar" style="width:{{helpers.timerwidth}}%;"></div>\t\t\t\t</div>\t\t\t',timerstart:'\t\t\t\t<button class="quizzlestick-start" type="button">Start</button>\t\t\t',
result:'\t\t\t\t<div class="quizzlestick-result-text">\t\t\t\t\t{{helpers.getresult}}\t\t\t\t</div>\t\t\t\t{{templates.share}}\t\t\t',questions:"\t\t\t\t{{questions}}\t\t\t",question:'\t\t\t\t<li class="quizzlestick-question">\t\t\t\t\t{{question}}\t\t\t\t\t<ul class="quizzlestick-answers">\t\t\t\t\t\t{{answers}}\t\t\t\t\t</ul>\t\t\t\t\t<div class="quizzlestick-result quizzlestick-result-question quizzlestick-hidden"></div>\t\t\t\t</li>\t\t\t',answer:'\t\t\t\t<li class="quizzlestick-answer">\t\t\t\t\t<a href="#">{{answer}}</a>\t\t\t\t</li>\t\t\t',
pollresults:'\t\t\t\t<div class="quizzlestick-poll-results">\t\t\t\t\t{{answers}}\t\t\t\t</div>\t\t\t',pollresult:'\t\t\t\t<div class="quizzlestick-poll-result">\t\t\t\t\t{{answer}}\t\t\t\t\t<div class="quizzlestick-poll-result-bar" style="width:{{helpers.answerwidth}}%;"><span>{{total}}</span></div>\t\t\t\t</div>\t\t\t',toolbar:'\t\t\t\t<div class="quizzlestick-toolbar">\t\t\t\t\t<a class="quizzlestick-check quizzlestick-hidden" href="#">Check answer</a>\t\t\t\t\t<a class="quizzlestick-prev quizzlestick-hidden" href="#">Previous</a>\t\t\t\t\t<a class="quizzlestick-next quizzlestick-hidden" href="#">Next</a>\t\t\t\t\t<a class="quizzlestick-finish quizzlestick-hidden" href="#">Results</a>\t\t\t\t</div>',
correct:'\t\t\t\t<div class="quizzlestick-response-correct">Correct!</div>\t\t\t',incorrect:'\t\t\t\t<div class="quizzlestick-response-incorrect">Wrong!</div>\t\t\t',share:""},helpers:{time:function(d,c){var a=Math.floor(c.state.time/1E3),b=Math.floor(a/60),f=Math.floor(b/60),k="",a=a-60*b,b=b-60*f;f&&(k+=(10>f?"0"+f:f)+":");return k=k+((10>b?"0"+b:b)+":")+(10>a?"0"+a:a)},timerwidth:function(d,c){var a=100/c.timelimit*c.state.time;isNaN(a)&&(a=0);return a},remainingtime:function(d,c){var a=Math.floor((c.timelimit-
c.state.time)/1E3),b=Math.floor(a/60),f=Math.floor(b/60),k="",a=a-60*b,b=b-60*f;f&&(k+=(10>f?"0"+f:f)+":");return k=k+((10>b?"0"+b:b)+":")+(10>a?"0"+a:a)},getresult:function(b,c){if(!d(this).data("complete"))return"";if("array"===d.type(c.results)){c.results.sort(function(a,c){return parseInt(a.points,10)>parseInt(c.points,10)});for(var a in c.results)if(c.state.points<=parseInt(c.results[a].points,10))return c.results[a]}return"string"===d.type(c.results)?c.results:"You scored <strong>{{state.points}}</string> out of <strong>{{state.maxpoints}}</strong>"},
getresultimage:function(){var b=d(this).find(".quizzlestick-result-final img"),c=d(this).find(".quizzlestick-result img");return b.length?b.eq(-1).attr("src"):c.length?c.eq(-1).attr("src"):""},numquestions:function(b,c){return c.helpers.getlength(c.questions)},currentquestion:function(b,c){return parseInt(c.state.question,10)+1},numanswers:function(b,c){var a=0,d;for(d in c.state.answers)a++;return a},progresswidth:function(b,c){var a=100/c.helpers.getlength(c.questions)*c.helpers.getlength(c.state.answers);
isNaN(a)&&(a=0);return a},totalanswers:function(b){return b.total},answertotal:function(b){return b.total},answerwidth:function(b,c,a){var g=0;c=0;d.map(a.list,function(a){return g+=parseInt(a.total,10)});c=100/g*parseInt(b.total,10);isNaN(c)&&(c=0);return c},numberformat:function(b){return""+b},getlength:function(b){var c=0;if("object"===d.type(b))for(var a in b)b.hasOwnProperty(a)&&c++;else b.length&&(c=b.length);return c}},api:{send:function(){}}};d(document).ready(function(){d("[data-quizzlestick]").quizzlestick()})})(jQuery);
(function(d){d.fumanchu=function(b,e,c,a){var g=this;d.fumanchu.context=e||{};d.fumanchu.fallback=c||e;d.fumanchu.args=a||{};if("undefined"===d.type(b))return"";"function"===d.type(b)&&(b=b.apply(g,[d.fumanchu.context,d.fumanchu.fallback,d.fumanchu.args]));if("object"===d.type(b))if(b.template)d.fumanchu.context=b,b=b.template;else try{b=b.html()}catch(f){}return b.toString().replace(/(?:__|{{)([a-z0-9\.]+)(?:}}|__)/gi,function(b,c){var e=d.fumanchu.getpath(c,d.fumanchu.context,d.fumanchu.fallback),
f="",m=d.fumanchu.templates[c]||d('[data-template="'+c+'"]').html();!d.fumanchu.templates[c]&&m&&(d.fumanchu.templates[c]=m);"object"===d.type(e)&&e.template?f=g.fumanchu(e.template,e,d.fumanchu.fallback,a):"array"===d.type(e)||"object"===d.type(e)?d.each(e,function(a,b){"object"===d.type(b)&&(!b.template&&m&&(b.template=m),d.fumanchu.context=b);f+=g.fumanchu(b,d.fumanchu.context,d.fumanchu.fallback,{list:e,index:a})}):"function"===d.type(e)?f=e.apply(g,[d.fumanchu.context,d.fumanchu.fallback,a]):
"number"===d.type(e)?f=d.fumanchu.numberformat(e,d.fumanchu.fallback):"boolean"===d.type(e)?f=e?"1":"0":"string"===d.type(e)&&(f=e);return g.fumanchu(f,d.fumanchu.context,d.fumanchu.fallback,d.fumanchu.args)})};d.fumanchu.getpath=function(b,e,c){b=b.split(".");return 4==b.length&&e&&e[b[0]]&&e[b[0]][b[1]]&&e[b[0]][b[1]][b[2]]&&"undefined"!==d.type(e[b[0]][b[1]][b[2]][b[3]])?e[b[0]][b[1]][b[2]][b[3]]:3==b.length&&e&&e[b[0]]&&e[b[0]][b[1]]&&"undefined"!==d.type(e[b[0]][b[1]][b[2]])?e[b[0]][b[1]][b[2]]:
2==b.length&&e&&e[b[0]]&&"undefined"!==d.type(e[b[0]][b[1]])?e[b[0]][b[1]]:1==b.length&&e&&"undefined"!==d.type(e[b[0]])?e[b[0]]:c&&e!==c?d.fn.fumanchu.getpath(b.join("."),c):""};d.fumanchu.templates={};d.fumanchu.numberformat=function(b){return""+b};d(document).ready(function(){d("[data-template]").each(function(){d.fumanchu.templates[d(this).data("template")]=d(this).html()})});d.fn.fumanchu=d.fumanchu})(jQuery);
//# sourceMappingURL=quizzlestick.min.js.map