MOD amélioration vitesse recherche js
[pompage.git] / js / yopyop.js
index 85efb3d..6f55fe5 100644 (file)
@@ -69,17 +69,31 @@ function detailFilm(id)
 // la date de la dernière recherche\r
 var derniereRecherche = new Date();\r
 derniereRecherche.setMinutes(derniereRecherche.getMinutes() - 1);\r
+var motifDerniereRecherche = ""\r
 \r
 /**\r
   * Effectue une recherche, n'affiche que les films qui contiennent le motif recherché
   * Recherche dans le titre, le realisateur, les acteurs, les genres et les pays en fonction des checkbox respectives.\r
   */\r
-function doRecherche()\r
+function doRecherche(f)\r
 {\r
-   // empèche de faire deux recherches successive en moins de 500ms\r
+   // le motif à chercher\r
+   var motif = document.getElementById("recherche").value\r
+   if (f == null && motif == motifDerniereRecherche) return;\r
+   \r
+   // empèche de faire deux recherches successive en moins de 800ms\r
    var now = new Date();\r
-   if (now.getTime() < derniereRecherche.getTime()  + 500)\r
+   if (now.getTime() < derniereRecherche.getTime() + 800)\r
+   {\r
+      // si une recherche à était demandé mais n'a pu aboutir alors on la refait dans certain temps\r
+      setTimeout("doRecherche()", 810 - (now.getTime() - derniereRecherche.getTime()));\r
       return;\r
+   }\r
+   motifDerniereRecherche = motif;\r
+   derniereRecherche = now;\r
+   \r
+   dump ("recherche : " + motif + "\r\n");\r
+   debut = new Date().getTime()\r
 \r
    var afficherTout = false;\r
    // si aucun choix n'est fait pour la recherche on affiche tout\r
@@ -93,10 +107,8 @@ function doRecherche()
    var nbFilm = 0; // pour compter le nombre de film total\r
    var nbFilmAffiche = 0; // pour compter le nombre de film affiché\r
       \r
-   // le motif à chercher\r
-   var motif = document.getElementById("recherche").value\r
-   var rechercheRegExp = new RegExp(".*" + motif + ".*", "i")\r
-   \r
+   var rechercheRegExp = new RegExp(motif, "i")\r
+      \r
    var liste = document.getElementById("liste")\r
    var lignes = liste.childNodes\r
    for(var i = 0; i < lignes.length; i += 2)\r
@@ -114,11 +126,11 @@ function doRecherche()
       // si le film satisfait la recherche alors on l'affiche sinon ou le cache\r
       if (\r
          afficherTout ||\r
-         document.getElementById("checkRechercheTitre").checked && rechercheRegExp.exec(titre) != null\r
-         || document.getElementById("checkRechercheGenres").checked && rechercheRegExp.exec(genres) != null\r
-         || document.getElementById("checkRechercheRealisateurs").checked && rechercheRegExp.exec(realisateurs) != null\r
-         || document.getElementById("checkRechercheActeurs").checked && rechercheRegExp.exec(acteurs) != null\r
-         || document.getElementById("checkRecherchePays").checked && rechercheRegExp.exec(pays) != null)      \r
+         document.getElementById("checkRechercheTitre").checked && rechercheRegExp.test(titre) \r
+         || document.getElementById("checkRechercheGenres").checked && rechercheRegExp.test(genres) \r
+         || document.getElementById("checkRechercheRealisateurs").checked && rechercheRegExp.test(realisateurs)\r
+         || document.getElementById("checkRechercheActeurs").checked && rechercheRegExp.test(acteurs) \r
+         || document.getElementById("checkRecherchePays").checked && rechercheRegExp.test(pays))      \r
       {\r
          lignes[i].style.display = "table-row"  \r
          lignes[i+1].style.display = "table-row" \r
@@ -133,6 +145,9 @@ function doRecherche()
    \r
    // mise à jour de l'affichage du nombre de film total/affiché\r
    document.getElementById("nbFilms").textContent = nbFilmAffiche + " / " + nbFilm + " film" + (nbFilm > 1 ? "s" : "")\r
+   \r
+   fin = new Date().getTime()\r
+   dump ("Temps : " + (fin - debut) / 1000 + "s\r\n\r\n")\r
 }\r
 \r
 /**\r