REPORT de la branche 1.1
[euphorik.git] / js / util.js
index 4dfc6b9..7ba8e60 100644 (file)
@@ -19,7 +19,7 @@
 /*jslint laxbreak:true */\r
 \r
 /**\r
-  * Cette classe regroupe des fonctions utilitaires (helpers) permettant notamment de :\r
+  * Cet objet regroupe des fonctions utilitaires (helpers) permettant notamment de :\r
   *  - afficher une boite de message\r
   *  - afficher une bulle d'aide lié à un élément\r
   *  - manipuler le curseur et réaliser des sélections sur des zones de saisie (<input>)\r
@@ -43,14 +43,16 @@ euphorik.Util.messageType = {informatif: 0, question: 1, erreur: 2};
   * @param message le message (string)\r
   * @param type voir 'messageType'. par défaut messageType.informatif\r
   * @param les boutons sous la forme d'un objet ou les clefs sont les labels des boutons\r
-  *        et les valeurs les fonctions executées lorsqu'un bouton est activé.\r
-  * @param formate faut-il formaté le message ? true par défaut\r
+  *        et les valeurs les fonctions executées lorsqu'un bouton est activé.
+  *        Lorsqu'un bouton est activé le message se ferme.     \r
+  * @param formate faut-il formaté le message ? true par défaut
+  * @param temps le temps d'affichage du message en seconde, -1 pour une durée infinie\r
   */\r
-euphorik.Util.prototype.messageDialogue = function(message, type, boutons, formate) {\r
+euphorik.Util.prototype.messageDialogue = function(message, type, boutons, formate, temps) {\r
    var thisUtil = this;\r
 \r
    type = type || euphorik.Util.messageType.informatif;\r
-   formate = formate || true;\r
+   formate = formate === undefined ? true : formate;\r
 \r
    if (this.timeoutMessageDialogue) {\r
       clearTimeout(this.timeoutMessageDialogue);\r
@@ -58,7 +60,7 @@ euphorik.Util.prototype.messageDialogue = function(message, type, boutons, forma
       \r
    var fermer = function() { $("#info").slideUp(100); };\r
    fermer();\r
-   \r
+\r
    $("#info .message").html(!thisUtil.formateur || !formate ? message : thisUtil.formateur.traitementComplet(message));\r
    \r
    switch(type) {\r
@@ -72,8 +74,10 @@ euphorik.Util.prototype.messageDialogue = function(message, type, boutons, forma
       $("#info .boutons").append("<div>" + nom + "</div>").find("div:last").click(bouton).click(fermer);\r
    });\r
    \r
-   $("#info").slideDown(200);\r
-   this.timeoutMessageDialogue = setTimeout(fermer, euphorik.conf.tempsAffichageMessageDialogue);\r
+   $("#info").slideDown(200);
+   if (temps !== -1) {\r
+      this.timeoutMessageDialogue = setTimeout(fermer, temps || euphorik.conf.tempsAffichageMessageDialogue);
+   }\r
 };\r
 \r
 euphorik.Util.positionTypeX = {gauche: 0, gaucheRecouvrement: 1, centre: 2, droiteRecouvrement: 3, droite: 4};\r
@@ -90,15 +94,15 @@ euphorik.Util.positionTypeY = {haut: 0, hautRecouvrement: 1, centre: 2, basRecou
 euphorik.Util.prototype.afficherBoite = function(boite, cible, positionX, positionY) {\r
     var positionCible = cible.offset();\r
     var positionBoite = {\r
-         left : positionX == euphorik.Util.positionTypeX.gauche ? positionCible.left - boite.width() :\r
-            (positionX == euphorik.Util.positionTypeX.gaucheRecouvrement ? positionCible.left - boite.width() + cible.width() : \r
-            (positionX == euphorik.Util.positionTypeX.droitelsRecouvrement ? positionCible.left :\r
-            (positionX == euphorik.Util.positionTypeX.droite ? positionCible.left + cible.width() :\r
+         left : positionX === euphorik.Util.positionTypeX.gauche ? positionCible.left - boite.width() :\r
+            (positionX === euphorik.Util.positionTypeX.gaucheRecouvrement ? positionCible.left - boite.width() + cible.width() : \r
+            (positionX === euphorik.Util.positionTypeX.droitelsRecouvrement ? positionCible.left :\r
+            (positionX === euphorik.Util.positionTypeX.droite ? positionCible.left + cible.width() :\r
             positionCible.left + cible.width() / 2 - boite.width() / 2 ))), // centre\r
-         top : positionY == euphorik.Util.positionTypeY.haut ? positionCible.top - boite.height() :\r
-            (positionY == euphorik.Util.positionTypeY.hautRecouvrement ? positionCible.top - boite.height() + cible.height() : \r
-            (positionY == euphorik.Util.positionTypeY.basRecouvrement ? positionCible.top :\r
-            (positionY == euphorik.Util.positionTypeY.bas ? positionCible.top + cible.height() :\r
+         top : positionY === euphorik.Util.positionTypeY.haut ? positionCible.top - boite.height() :\r
+            (positionY === euphorik.Util.positionTypeY.hautRecouvrement ? positionCible.top - boite.height() + cible.height() : \r
+            (positionY === euphorik.Util.positionTypeY.basRecouvrement ? positionCible.top :\r
+            (positionY === euphorik.Util.positionTypeY.bas ? positionCible.top + cible.height() :\r
             positionCible.top + cible.height() / 2 - boite.height() / 2 ))) // centre\r
       };\r
       \r
@@ -113,6 +117,16 @@ euphorik.Util.prototype.afficherBoite = function(boite, cible, positionX, positi
 };\r
 \r
 euphorik.Util.positionBulleType = {haut : 0, droite : 1, bas : 2, gauche : 3};\r
+
+/**
+  * Affiche ou cache la barre d'attente.
+  */
+euphorik.Util.prototype.showWaitBar = function() {
+   $("#waitbar").show();
+};
+euphorik.Util.prototype.hideWaitBar = function() {
+   $("#waitbar").hide();
+};
 \r
 /**\r
   * Affiche un info bulle lorsque le curseur survole l'élément donné.\r
@@ -137,9 +151,9 @@ euphorik.Util.prototype.infoBulle = function(message, element, position) {
 \r
          var m = $("#messageBulle");\r
          var f = $("#flecheBulle");\r
-         f.removeClass().addClass(position == euphorik.Util.positionBulleType.haut ? "flecheBulleHaut" :\r
-            (position == euphorik.Util.positionBulleType.droite ? "flecheBulleDroite" : \r
-            (position == euphorik.Util.positionBulleType.bas ? "flecheBulleBas" : "flecheBulleGauche" )));\r
+         f.removeClass().addClass(position === euphorik.Util.positionBulleType.haut ? "flecheBulleHaut" :\r
+            (position === euphorik.Util.positionBulleType.droite ? "flecheBulleDroite" : \r
+            (position === euphorik.Util.positionBulleType.bas ? "flecheBulleBas" : "flecheBulleGauche" )));\r
          \r
          // remplie le paragraphe de la bulle avec le message\r
          $("p", m).html(message);\r
@@ -149,20 +163,20 @@ euphorik.Util.prototype.infoBulle = function(message, element, position) {
          m.css("top", 0).css("left", 0);\r
          \r
          var positionFleche = {\r
-            left : position == euphorik.Util.positionBulleType.haut || position == euphorik.Util.positionBulleType.bas ?\r
+            left : position === euphorik.Util.positionBulleType.haut || position === euphorik.Util.positionBulleType.bas ?\r
                 element.offset().left + element.outerWidth() / 2 - f.width() / 2 :\r
-                (position == euphorik.Util.positionBulleType.gauche ? element.offset().left - f.width() : element.offset().left + element.outerWidth()),\r
-            top : position == euphorik.Util.positionBulleType.gauche || position == euphorik.Util.positionBulleType.droite ?\r
+                (position === euphorik.Util.positionBulleType.gauche ? element.offset().left - f.width() : element.offset().left + element.outerWidth()),\r
+            top : position === euphorik.Util.positionBulleType.gauche || position === euphorik.Util.positionBulleType.droite ?\r
                 element.offset().top + element.outerHeight() / 2 - f.height() / 2 :\r
-                (position == euphorik.Util.positionBulleType.haut ? element.offset().top - f.height() : element.offset().top + element.outerHeight())\r
+                (position === euphorik.Util.positionBulleType.haut ? element.offset().top - f.height() : element.offset().top + element.outerHeight())\r
          };\r
          var positionMessage = {\r
-            left : position == euphorik.Util.positionBulleType.haut || position == euphorik.Util.positionBulleType.bas ?\r
+            left : position === euphorik.Util.positionBulleType.haut || position === euphorik.Util.positionBulleType.bas ?\r
                 element.offset().left + element.width() / 2 - m.width() / 2 :\r
-                (position == euphorik.Util.positionBulleType.gauche ? element.offset().left - f.width() - m.width() : element.offset().left + f.width() + element.outerWidth()),\r
-            top : position == euphorik.Util.positionBulleType.gauche || position == euphorik.Util.positionBulleType.droite ?\r
+                (position === euphorik.Util.positionBulleType.gauche ? element.offset().left - f.width() - m.width() : element.offset().left + f.width() + element.outerWidth()),\r
+            top : position === euphorik.Util.positionBulleType.gauche || position === euphorik.Util.positionBulleType.droite ?\r
                 element.offset().top + element.outerHeight() / 2 - m.height() / 2 :\r
-                (position == euphorik.Util.positionBulleType.haut ? element.offset().top - f.height() - m.height() : element.offset().top + f.height() + element.outerHeight())\r
+                (position === euphorik.Util.positionBulleType.haut ? element.offset().top - f.height() - m.height() : element.offset().top + f.height() + element.outerHeight())\r
          };\r
          var depassementDroit = (positionMessage.left + m.width()) - $("body").width();\r
          if (depassementDroit > 0) {\r
@@ -180,10 +194,11 @@ euphorik.Util.prototype.infoBulle = function(message, element, position) {
 \r
 /**\r
   * Utilisé pour l'envoie de données avec la méthode ajax de jQuery.\r
+  * Obsolète : à virer\r
   */\r
-euphorik.Util.prototype.jsonVersAction = function(json) {\r
+/*euphorik.Util.prototype.jsonVersAction = function(json) {\r
    return { action : JSON.stringify(json) };\r
-};\r
+};*/\r
 \r
 /**\r
   * Retourne un hash md5 d'une chaine, dépend de md5.js.\r
@@ -237,7 +252,7 @@ euphorik.Util.prototype.replaceSelection = function(input, replaceString) {
    } else if (document.selection) {\r
       input.focus();\r
       var range = document.selection.createRange();\r
-      if (range.parentElement() == input) {\r
+      if (range.parentElement() === input) {\r
          var isCollapsed = range.text === '';\r
          range.text = replaceString;\r
          if (!isCollapsed) {\r
@@ -259,7 +274,7 @@ euphorik.Util.prototype.rot13 = function(chaine) {
    var zCode = 'z'.charCodeAt(0);\r
 \r
    var f = function(ch, pos) {\r
-      if (pos == ch.length) {\r
+      if (pos === ch.length) {\r
          return "";\r
       }\r
       \r