optimisatio code switch / case

optimisatio code switch / case - Javascript/Node.js - Programmation

Marsh Posté le 27-10-2014 à 20:22:04    

bonjour voilà j'ai un code plutôt 'sale' et que je n'arrive pas à optimiser , merci pour des suggestions  
le but de ce code est de remplir après un ordre ajax une zone d'image qui est dans un autre ordre ajax (celui appelant)  
la première partie construit une ligne par item et réserve la partie image qui sera instanciée par un appel à la fonction get_Poster()  
la ligne construite se présente sous la forme :  

Code :
  1. temp_output =  "<a href=\"javascript:setId('" + filmography_list[i].type + "', '" + filmography_list[i].videoDataId + "');\"><img class=\"poster"+i+"\" src=\"\" height=\"60px\" width=\"40px\" ></img></a>" + temp_output ;


 
le   get_poster(filmography_list[i].type, filmography_list[i].videoDataId, i);  va chercher via un autre ordre ajax les infos et mets à jour la zone d'image réservée via  updatePosterHtml(Poster_data, i);
 

Code :
  1. function updatePosterHtml(Posterdata, i)
  2.             {
  3.             //    console.log(Posterdata);
  4.    switch (i)
  5.       {
  6.       case 0:
  7.        YAMJ_DIR0 = {
  8.          // display poster  
  9.        'img.poster0@src': function(arg) {
  10.            // Check to see if there are posters
  11.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  12.           }
  13.        }
  14.        $p('.result_filmography').render(Posterdata, YAMJ_DIR0);
  15.        break;
  16.       case 1:
  17.        YAMJ_DIR1 = {
  18.          // display poster  
  19.        'img.poster1@src': function(arg) {
  20.            // Check to see if there are posters
  21.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  22.           }
  23.        }
  24.        $p('.result_filmography').render(Posterdata, YAMJ_DIR1);
  25.        break;
  26.       case 2:
  27.        YAMJ_DIR2 = {
  28.          // display poster  
  29.        'img.poster2@src': function(arg) {
  30.            // Check to see if there are posters
  31.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  32.           }
  33.        }
  34.        $p('.result_filmography').render(Posterdata, YAMJ_DIR2);
  35.        break;
  36.       case 3:
  37.        YAMJ_DIR3 = {
  38.          // display poster  
  39.        'img.poster3@src': function(arg) {
  40.            // Check to see if there are posters
  41.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  42.           }
  43.        }
  44.        $p('.result_filmography').render(Posterdata, YAMJ_DIR3);
  45.        break;
  46.       case 4:
  47.        YAMJ_DIR4 = {
  48.          // display poster  
  49.        'img.poster4@src': function(arg) {
  50.            // Check to see if there are posters
  51.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  52.           }
  53.        }
  54.        $p('.result_filmography').render(Posterdata, YAMJ_DIR4);
  55.        break;
  56.       case 5:
  57.        YAMJ_DIR5 = {
  58.          // display poster  
  59.        'img.poster5@src': function(arg) {
  60.            // Check to see if there are posters
  61.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  62.           }
  63.        }
  64.        $p('.result_filmography').render(Posterdata, YAMJ_DIR5);
  65.        break;
  66.       case 6:
  67.        YAMJ_DIR6 = {
  68.          // display poster  
  69.        'img.poster6@src': function(arg) {
  70.            // Check to see if there are posters
  71.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  72.           }
  73.        }
  74.        $p('.result_filmography').render(Posterdata, YAMJ_DIR6);
  75.        break;
  76.       case 7:
  77.        YAMJ_DIR7 = {
  78.          // display poster  
  79.        'img.poster7@src': function(arg) {
  80.            // Check to see if there are posters
  81.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  82.           }
  83.        }
  84.        $p('.result_filmography').render(Posterdata, YAMJ_DIR7);
  85.        break;
  86.       case 8:
  87.        YAMJ_DIR8 = {
  88.          // display poster  
  89.        'img.poster8@src': function(arg) {
  90.            // Check to see if there are posters
  91.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  92.           }
  93.        }
  94.        $p('.result_filmography').render(Posterdata, YAMJ_DIR8);
  95.        break;
  96.       case 9:
  97.        YAMJ_DIR9 = {
  98.          // display poster  
  99.        'img.poster9@src': function(arg) {
  100.            // Check to see if there are posters
  101.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  102.           }
  103.        }
  104.        $p('.result_filmography').render(Posterdata, YAMJ_DIR9);
  105.        break;
  106.       case 10:
  107.        YAMJ_DIR10 = {
  108.          // display poster  
  109.        'img.poster10@src': function(arg) {
  110.            // Check to see if there are posters
  111.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  112.           }
  113.        }
  114.        $p('.result_filmography').render(Posterdata, YAMJ_DIR10);
  115.        break;
  116.       case 11:
  117.        YAMJ_DIR11 = {
  118.          // display poster  
  119.        'img.poster10@src': function(arg) {
  120.            // Check to see if there are posters
  121.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  122.           }
  123.        }
  124.        $p('.result_filmography').render(Posterdata, YAMJ_DIR11);
  125.        break;
  126.       }
  127.             }


 
 
le switch /  case fonctionne mais je trouve cela pas beau et limite le nombre d'item qui pourra aller jusqu'à 50

Reply

Marsh Posté le 27-10-2014 à 20:22:04   

Reply

Marsh Posté le 28-10-2014 à 09:00:28    

Salut,
 
Je pense aussi qu'on peut raccourcir ca ^^'
Primo, qu'est-ce qui change entre chaque Case ?  
Si je me trompe pas, il y a juste dans "img.posterXX@src" le XX qui change en fonction du case non ?  
Alors pourquoi pas faire une fonction plus générique :  
 

Code :
  1. function updatePosterHtml(Posterdata, i)
  2. {
  3.     YAMJ_DIR11 = {
  4.        'img.poster' + i + '@src': function(arg) {
  5.             return arg.context.baseArtworkUrl + arg.context.result.artwork.POSTER[0].filename;
  6.           }
  7.        }
  8.        $p('.result_filmography').render(Posterdata, YAMJ_DIR11);
  9. }


 
PS : j'ai pas testé ^^'


Message édité par torwood3 le 28-10-2014 à 09:01:06

---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 28-10-2014 à 09:24:45    

merci de cette suggestion , j'avais déjà essayé et cela me retourne  
Uncaught SyntaxError: Unexpected token +  
le javascript ne supporte pas les agrégats devant le :

Reply

Marsh Posté le 28-10-2014 à 10:03:15    

jluc2808 a écrit :

merci de cette suggestion , j'avais déjà essayé et cela me retourne  
Uncaught SyntaxError: Unexpected token +  
le javascript ne supporte pas les agrégats devant le :


 
Intéressent  :D  
 
Tu peux m'expliquer pourquoi tu as besoin que ton nom de fonction soit comme ca ? :)  
 
Merci


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 28-10-2014 à 19:58:20    

oui bien sur, j'ai essayé de donner le contexte en haut de mon post:  
j'ai besoin de peupler des emplacements via une requête et un traitement qui va dynamiquement réserver une place en fonction du contenu de la requête  et je vais chercher les images qui les caractéristiques coïncidents à cette emplacement réservé mais qui  sont issues d'une autre requête  
 
la solution que j'ai trouvé est de faire un .append en Jquery avec une class_id construite  
puis de remplir cette class_id par le retour d'une requête Ajax, mais seulement si la réservation a été faite.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed