1 /** 2 * @fileOverview a scoreboard widget 3 * @author Bryan Berry <bryan@olenepal.org> 4 * uses MIT License 5 */ 6 7 8 9 (function($){ 10 11 // This is a dummy function, just here as placeholder to 12 // to make the jsdoc tool happy 13 /** @name $.ui.feedback 14 * @namespace Feedback widget 15 */ 16 $.ui.feedback = function(){}; 17 18 $.widget('ui.feedback', 19 /** @lends $.ui.feedback.prototype */ 20 { 21 /** Displays the correct icon in the center of the screen 22 * and plays the sound "correct" if loaded 23 */ 24 correct: function(){ 25 var $correct = this.$correct.css('display','block'); 26 setTimeout ( function() { 27 $correct.fadeOut(500); 28 }, 500); 29 if (Karma && Karma.audio && Karma.audio.correct){ 30 Karma.audio.correct.play(); 31 } 32 33 }, 34 /** Displays the incorrect icon in the center of the screen 35 * and plays the sound "incorrect" if loaded 36 */ 37 incorrect: function(){ 38 39 var $incorrect = this.$incorrect.css('display','block'); 40 setTimeout ( function() { 41 $incorrect.fadeOut(500); 42 }, 500); 43 44 //this.$incorrect.css('display','block').fadeOut(3000); 45 if (Karma && Karma.audio && Karma.audio.incorrect){ 46 Karma.audio.incorrect.play(); 47 } 48 49 }, 50 /** Display a happy face and text that says "You win!" 51 * 52 */ 53 win: function(){ 54 this.$win.show(); 55 this.$overlay.show(); 56 }, 57 /** Display an unhappy face and text that says "You lose!" 58 * 59 */ 60 lose: function(){ 61 this.$lose.show(); 62 this.$overlay.show(); 63 }, 64 _init : function(){ 65 var self = this; 66 67 this.element 68 .addClass('ui-feedback') 69 .css({position:'absolute', 70 top: '40%', left: '40%'}); 71 72 this.$correct = $('<div></div>') 73 .addClass('ui-feedback-correct') 74 .appendTo(this.element); 75 76 this.$incorrect = $('<div></div>') 77 .addClass('ui-feedback-incorrect') 78 .appendTo(this.element); 79 80 this.$win = $("<div class='ui-feedback-over'>" + 81 "<div class='ui-feedback-win'></div>" + 82 "<div class='ui-feedback-txt'>You win!" + 83 "</div></div>") 84 .click( 85 function(){ 86 self.$win.hide(); 87 self.$overlay.hide(); 88 } 89 ) 90 .appendTo(this.element); 91 92 this.$lose = $("<div class='ui-feedback-over'>" + 93 "<div class='ui-feedback-lose'></div>" + 94 "<div class='ui-feedback-txt'>You lose!" + 95 "</div></div>") 96 .click( 97 function(){ 98 self.$lose.hide(); 99 self.$overlay.hide(); 100 } 101 ) 102 .appendTo(this.element); 103 104 this.$overlay = $('<div></div>') 105 .addClass('ui-feedback-overlay') 106 .appendTo($('body')); 107 108 109 110 $('body') 111 .bind('feedbackCorrect', function(){ 112 self.correct(); 113 }) 114 .bind('feedbackIncorrect', function(){ 115 self.incorrect(); 116 }); 117 118 }, 119 /** Removes the feedback widget and all related data from the DOM */ 120 destroy : function(){ 121 this.element.remove(); 122 $.widget.prototype.destroy.apply(this, arguments); 123 } 124 125 126 }); 127 128 $.ui.feedback.getter = []; 129 130 /** Default settings for the feedback widget 131 * @namespace Default settings for the feedback widget 132 * @extends $.ui.feedback 133 */ 134 $.ui.feedback.defaults = { 135 }; 136 137 })(jQuery);