quizpanel.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. (function(){
  2. var app={};
  3. app.controllers={};
  4. app.controllers.addition= {
  5. sign:"+"
  6. };
  7. app.controllers.subtraction= {
  8. sign:"-"
  9. };
  10. app.controllers.division= {
  11. sign:"/"
  12. };
  13. app.controllers.multiplication= {
  14. sign:"*"
  15. };
  16. app.controllers.shapes = {
  17. sign:""
  18. };
  19. app.controllers.colors = {
  20. sign:""
  21. };
  22. window.app=app;
  23. })();
  24. (function($){
  25. var points=0;
  26. var currentCategory;
  27. var categoryQuestions;
  28. var categoryCorrect;
  29. $(document).ready(function(){
  30. $("#quiz").bind("panelgrowstart",function(e,item,reverse){
  31. $(".answerList").removeClass("active");
  32. $(".answerList li").removeClass("correct wrong response");
  33. $(this).closest('.view').find('#transitionView').removeClass("addition subtraction division multiplication shapes colors").addClass('active '+$(item).attr('data-category'));
  34. $("#quiz h3").html($(item).attr('data-category'));
  35. $("#quiz h2").html("(0/0)");
  36. currentCategory=$(item).attr('data-category');
  37. var item=$("#quiz .card");
  38. item.get(0).className="card";
  39. item.get(0).classList.add(currentCategory);
  40. categoryQuestions=categoryCorrect=0;
  41. addNewQuestions();
  42. });
  43. $("#quiz").bind("panelgrowcomplete",function(e,item,reverse){
  44. var img=$(this).closest('.view').find('#transitionView');
  45. if($.os.android) return img.removeClass("active"), $(".answerList").addClass("active");
  46. setTimeout(function(){
  47. img.animation().keep().reverse().end(function(){
  48. $(".answerList").addClass("active");
  49. this.classList.remove("active");
  50. this.classList.remove("fade-in");
  51. }).run("fade-in");
  52. },100);
  53. });
  54. $("#quiz").bind("panelgrowendstart",function(e){
  55. //$(this).closest(".view").children().css("visibility","hidden");
  56. $(this).closest('.view').find('#transitionView').addClass("active");
  57. });
  58. $("#quiz").bind("panelgrowendcomplete",function(e){
  59. //$(this).closest(".view").children().css("visibility","hidden");
  60. var img=$(this).closest('.view').find('#transitionView');
  61. img.animation().keep().reverse().end(function(){
  62. this.classList.remove("active");
  63. this.classList.remove("fade-in");
  64. }).run("fade-in");
  65. });
  66. $("#quiz").on("click",".answerList li",function(e){
  67. var $el=$(e.target);
  68. $el.parent().find("li").removeClass("response");
  69. $el.addClass("response");
  70. $(".answerArrow").addClass("response");
  71. });
  72. $("#quiz").on("click",".answerArrow",function(e){
  73. //check current question;
  74. var item=$("#quiz li.response");
  75. if(item.length===0) return;
  76. $(e.target).addClass("active");
  77. setTimeout(function(){
  78. categoryQuestions++;
  79. item.parent().find("[data-correct]").addClass("correct");
  80. if(item.attr("data-correct")){
  81. $("#points").html(++points);
  82. categoryCorrect++;
  83. }
  84. else{
  85. item.addClass("wrong");
  86. }
  87. $("#quiz h2").html("("+categoryCorrect+"/"+categoryQuestions+")");
  88. setTimeout(function(){
  89. $(e.target).removeClass("active");
  90. $(".answerArrow").removeClass("response");
  91. $(".answerList li").removeClass("correct wrong response");
  92. addNewQuestions();
  93. },1000);
  94. },500);
  95. });
  96. function getRandomInt(max) {
  97. return Math.floor(Math.random() * max);
  98. }
  99. function addNewQuestions(){
  100. var items=generateAnswers();
  101. var answers=[];
  102. answers.push(items.answer);
  103. do {
  104. resp=getRandomInt(9);
  105. if(answers.indexOf(resp)===-1)
  106. answers.push(resp);
  107. }
  108. while(answers.length<4);
  109. var userAnswers=$(".answerList li");
  110. userAnswers.removeAttr("data-correct");
  111. userAnswers.each(function(i){
  112. this.innerHTML=answers[i];
  113. if(answers[i]===items.answer)
  114. $(this).attr("data-correct",true);
  115. });
  116. $(".questionTitle").html("What is "+items.l+(app.controllers[currentCategory].sign)+items.r+"?");
  117. //$(".answerList li").shuffle();
  118. }
  119. function generateAnswers()
  120. {
  121. var response = {
  122. l:0,
  123. r:0,
  124. answer:0
  125. };
  126. switch(app.controllers[currentCategory].sign){
  127. case "+":
  128. response.l=getRandomInt(9);
  129. response.r=getRandomInt(9);
  130. response.answer=response.l+response.r;
  131. break;
  132. case "-":
  133. do {
  134. response.l=getRandomInt(9);
  135. response.r=getRandomInt(9);
  136. }
  137. while(response.r>response.l);
  138. response.answer=response.l-response.r;
  139. break;
  140. case "/":
  141. do {
  142. response.l=getRandomInt(9);
  143. response.r=getRandomInt(9);
  144. }
  145. while(response.l<response.r||((Number(response.l/response.r)+"").length>1));
  146. response.answer=response.l/response.r;
  147. break;
  148. case "*":
  149. response.l=getRandomInt(9);
  150. response.r=getRandomInt(9);
  151. response.answer=response.l*response.r;
  152. break;
  153. }
  154. return response;
  155. }
  156. $(".category").attr("data-grower","#quiz");
  157. $(".answerList li").attr("data-ignore-pressed",true);
  158. });
  159. })(jQuery);