| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 | 
							- /* global $, interfaceConfig */
 - 
 - /*
 -  * Created by Yana Stamcheva on 2/10/15.
 -  */
 - var messageHandler = require("./util/MessageHandler");
 - var callStats = require("../statistics/CallStats");
 - var APP = require("../../app");
 - 
 - /**
 -  * Constructs the html for the overall feedback window.
 -  *
 -  * @returns {string} the constructed html string
 -  */
 - var constructOverallFeedbackHtml = function() {
 -     var feedbackQuestion = (Feedback.feedbackScore < 0)
 -         ? '<br/><br/>' + APP.translation
 -         .translateString("dialog.feedbackQuestion")
 -         : '';
 - 
 -     var message = '<div class="feedback"><div>' +
 -         '<div class="feedbackTitle">' +
 -         APP.translation.translateString("dialog.thankYou",
 -                                         {appName:interfaceConfig.APP_NAME}) +
 -         '</div>' +
 -         feedbackQuestion +
 -         '</div><br/><br/>' +
 -         '<div id="stars">' +
 -         '<a><i class="fa fa-star-o fa fa-star"></i></a>' +
 -         '<a><i class="fa fa-star-o fa fa-star"></i></a>' +
 -         '<a><i class="fa fa-star-o fa fa-star"></i></a>' +
 -         '<a><i class="fa fa-star-o fa fa-star"></i></a>' +
 -         '<a><i class="fa fa-star-o fa fa-star"></i></a>' +
 -         '</div></div>';
 - 
 -     return message;
 - };
 - 
 - /**
 -  * Constructs the html for the detailed feedback window.
 -  *
 -  * @returns {string} the contructed html string
 -  */
 - var constructDetailedFeedbackHtml = function() {
 -     // Construct the html, which will be served as a dialog message.
 -     var message = '<div class="feedback">' +
 -         '<div class="feedbackTitle">' +
 -         APP.translation.translateString("dialog.sorryFeedback") +
 -         '</div><br/><br/>' +
 -         '<div class="feedbackDetails">' +
 -         '<textarea id="feedbackTextArea" rows="10" cols="50" autofocus>' +
 -         '</textarea>' +
 -         '</div></div>';
 - 
 -     return message;
 - };
 - 
 - /**
 -  * The callback function corresponding to the openFeedbackWindow parameter.
 -  *
 -  * @type {function}
 -  */
 - var feedbackWindowCallback = null;
 - 
 - /**
 -  * Defines all methods in connection to the Feedback window.
 -  *
 -  * @type {{feedbackScore: number, openFeedbackWindow: Function,
 -  * toggleStars: Function, hoverStars: Function, unhoverStars: Function}}
 -  */
 - var Feedback = {
 -     /**
 -      * The feedback score. -1 indicates no score has been given for now.
 -      */
 -     feedbackScore: -1,
 -     /**
 -      * Opens the feedback window.
 -      */
 -     openFeedbackWindow: function (callback) {
 -         feedbackWindowCallback = callback;
 -         // Add all mouse and click listeners.
 -         var onLoadFunction = function (event) {
 -             $('#stars >a').each(function(index) {
 -                 // On star mouse over.
 -                 $(this).get(0).onmouseover = function(){
 -                     Feedback.hoverStars(index);
 -                 };
 -                 // On star mouse leave.
 -                 $(this).get(0).onmouseleave = function(){
 -                     Feedback.unhoverStars(index);
 -                 };
 -                 // On star click.
 -                 $(this).get(0).onclick = function(){
 -                     Feedback.toggleStars(index);
 -                     Feedback.feedbackScore = index+1;
 - 
 -                     // If the feedback is less than 3 stars we're going to
 -                     // ask the user for more information.
 -                     if (Feedback.feedbackScore > 3) {
 -                         callStats.sendFeedback(Feedback.feedbackScore, "");
 -                         if (feedbackWindowCallback)
 -                             feedbackWindowCallback();
 -                         else
 -                             APP.UI.messageHandler.closeDialog();
 -                     }
 -                     else {
 -                         feedbackDialog.goToState('detailed_feedback');
 -                     }
 -                 };
 -                 // Init stars to correspond to previously entered feedback.
 -                 if (Feedback.feedbackScore > 0
 -                     && index < Feedback.feedbackScore) {
 -                     Feedback.hoverStars(index);
 -                     Feedback.toggleStars(index);
 -                 }
 -             });
 -         };
 - 
 -         // Defines the different states of the feedback window.
 -         var states = {
 -             overall_feedback: {
 -                 html: constructOverallFeedbackHtml(),
 -                 persistent: true,
 -                 buttons: {},
 -                 closeText: '',
 -                 focus: "div[id='stars']",
 -                 position: {width: 500}
 -             },
 -             detailed_feedback: {
 -                 html: constructDetailedFeedbackHtml(),
 -                 buttons: {"Submit": true, "Cancel": false},
 -                 closeText: '',
 -                 focus: "textarea[id='feedbackTextArea']",
 -                 position: {width: 500},
 -                 submit: function(e,v,m,f) {
 -                     e.preventDefault();
 -                     if (v) {
 -                         var feedbackDetails
 -                             = document.getElementById("feedbackTextArea").value;
 - 
 -                         if (feedbackDetails && feedbackDetails.length > 0)
 -                             callStats.sendFeedback( Feedback.feedbackScore,
 -                                                     feedbackDetails);
 - 
 -                         if (feedbackWindowCallback)
 -                             feedbackWindowCallback();
 -                         else
 -                             APP.UI.messageHandler.closeDialog();
 -                     } else {
 -                         // User cancelled
 -                         if (feedbackWindowCallback)
 -                             feedbackWindowCallback();
 -                         else
 -                             APP.UI.messageHandler.closeDialog();
 -                     }
 -                 }
 -             }
 -         };
 - 
 -         // Create the feedback dialog.
 -         var feedbackDialog
 -             = APP.UI.messageHandler.openDialogWithStates(
 -                 states,
 -                 {   persistent: true,
 -                     buttons: {},
 -                     closeText: '',
 -                     loaded: onLoadFunction,
 -                     position: {width: 500}}, null);
 -     },
 -     /**
 -      * Toggles the appropriate css class for the given number of stars, to
 -      * indicate that those stars have been clicked/selected.
 -      *
 -      * @param starCount the number of stars, for which to toggle the css class
 -      */
 -     toggleStars: function (starCount)
 -     {
 -         $('#stars >a >i').each(function(index) {
 -             if (index <= starCount) {
 -                 $(this).removeClass("fa-star-o");
 -             }
 -             else
 -                 $(this).addClass("fa-star-o");
 -         });
 -     },
 -     /**
 -      * Toggles the appropriate css class for the given number of stars, to
 -      * indicate that those stars have been hovered.
 -      *
 -      * @param starCount the number of stars, for which to toggle the css class
 -      */
 -     hoverStars: function (starCount)
 -     {
 -         $('#stars >a >i').each(function(index) {
 -             if (index <= starCount)
 -                 $(this).addClass("starHover");
 -         });
 -     },
 -     /**
 -      * Toggles the appropriate css class for the given number of stars, to
 -      * indicate that those stars have been un-hovered.
 -      *
 -      * @param starCount the number of stars, for which to toggle the css class
 -      */
 -     unhoverStars: function (starCount)
 -     {
 -         $('#stars >a >i').each(function(index) {
 -             if (index <= starCount && $(this).hasClass("fa-star-o"))
 -                 $(this).removeClass("starHover");
 -         });
 -     }
 - };
 - 
 - // Exports the Feedback class.
 - module.exports = Feedback;
 
 
  |