Advertisement
Guest User

Slt lé bro c lrb

a guest
Dec 11th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.80 KB | None | 0 0
  1. <style>
  2. .bloc {float:left;margin:10px; text-align:center;}
  3. .bloc > div {border:1px solid black;width:200px;}
  4. .titre {background-color:lightgrey;height:30px;}
  5. .contenu{height:270px;}
  6. #modeles{display:none;}
  7. #listeItems{height: 100px;
  8. overflow: scroll}
  9. </style>
  10.  
  11. <script src="jquery.js"></script>
  12. <script>
  13.    
  14. function mkbloc(id) {
  15.     // instancier un nouveau bloc dans la page
  16.     var jBloc = $("#modeleBloc").clone();
  17.    
  18.     if (id != undefined)    jBloc.attr("id",id);
  19.     else jBloc.removeAttr("id");
  20.  
  21.     $("body").append(jBloc);
  22.  
  23.     return jBloc;
  24. }
  25.  
  26. // Au début du chargement de la page, on prépare des "composants" avec leur forme et leurs interactions, que l'on clonera suivant les besoins
  27. // => à faire dans $(document).ready
  28.  
  29. function choixListe(jBloc) {
  30.     // Initialiser l'interface de choix de liste
  31.     // Dans le bloc considéré
  32.     var jForm = $("#modeleChoixListe").clone(true);
  33.     // true permet de cloner aussi les ges. d'evnt.
  34.     $(".titre",jBloc).html("Choix Liste");
  35.     $(".contenu",jBloc).html(jForm.html());
  36.  
  37.  
  38.     $(".btnChoixListe", jBloc).click(function(){
  39.         // recup option sélectionnée
  40.         var meta = $("option:selected",jBloc).data();
  41.         if (meta == undefined) return;
  42.         // il n'y a aucune option sélectionnée
  43.  
  44.         listerItems(jBloc,meta);
  45.     });
  46.  
  47.     $.getJSON(  "data.php",
  48.                             {   "action":"getListes"},
  49.                             function (oRep){
  50.         // oRep.listes :[{"id":"1","idCreateur":"1","theme":"..."}
  51.         var i;
  52.         for(i=0;i<oRep.listes.length; i++) {
  53.             // préparation option avec ses méta-données
  54.             var nextO = $("<option>")
  55.                                         .html(oRep.listes[i].theme)
  56.                                         .data(oRep.listes[i]);
  57.             // insertion dans menu déroulant
  58.             $("select", jBloc).append(nextO);
  59.         }
  60.     });
  61.  
  62. }
  63.  
  64.  
  65.  
  66. function listerItems(jBloc,meta){
  67.     var jForm = $("#modeleItems").clone();
  68.     $(".titre",jBloc).html(meta.theme);
  69.     $(".contenu",jBloc).html(jForm.html());
  70.  
  71.  
  72.         $.getJSON(  "data.php",
  73.                             {   "action":"getItems","idListe":meta.id},
  74.                             function (oRep){
  75.  
  76.             var i,check = '';
  77.             for (i=0;i<oRep.items.length;i++) {
  78.                 if (oRep.items[i].checked==1)
  79.                     check = "<input type='checkbox' id=" +oRep.items[i].id +" checked class='checkbox'>";
  80.                 else check = "<input type='checkbox' id=" + oRep.items[i].id +" class='checkbox'>";
  81.  
  82.                 var item = $("<li>")
  83.                                         .html(oRep.items[i].label + check)
  84.                                         .data(oRep.items[i]);
  85.  
  86.  
  87.  
  88.                     $("ul", jBloc).append(item);
  89.             }
  90. });
  91.  
  92. $(".checkbox").click(function(){
  93.  
  94.     var id = $(this).attr('id');
  95.     console.log("hello");
  96.  
  97.  //($('#checkbox').attr('checked')) ou (this).checked
  98.      if($('#checkbox').attr('checked')){
  99.  
  100.     $.getJSON(  "data.php",
  101.                             {   "action":"unCheckItem","idItem":id},listerItems(jBloc,meta));
  102.    
  103. }
  104. });
  105. }
  106. function initBloc(jBloc) {
  107.     // insérer un form de conn. dans le bloc
  108.     var jForm = $("#modeleFormConnexion").clone();
  109.     $(".titre",jBloc).html("Connexion");
  110.     $(".contenu",jBloc).html(jForm.html());
  111.  
  112.  
  113.     // comportement du bouton "Se connecter"
  114.     $(".btnConnexion",jBloc).click(function(){
  115.         // envoyer un req. ajax vers data.php?action=connexion...
  116.         //  &login=?? &passe=??
  117.         // ATTENTION : nous sommes ici dans une fonction de rappel
  118.         // Déclenchée BIEN APRES la FIN de la fonction initBloc
  119.         // La création de cette fonction a "enfermé"
  120.         // dans son scope les variables jForm et jBloc
  121.         // correspondant AU BLOC qui vient d'être créé
  122.  
  123.         var login = $("input[type=text]",jBloc).val();
  124.         var passe = $("input[type='password']",jBloc).val();
  125.  
  126.         $.getJSON("data.php",
  127.                                 {   "action":"connexion",
  128.                                     "login":login,
  129.                                     "passe":passe      
  130.                                 }, function (oRep){
  131.             // fn callback rappelée lors de la rép. du serveur
  132.             // oRep est la réponse structurée en JSON
  133.             if(!oRep.connecte) {
  134.                 // echec de l'identification
  135.                 // on affiche un message
  136.                 console.log("erreur");
  137.                 $(".message",jBloc).html("Connexion refusee");
  138.             }
  139.             else {
  140.                 choixListe(jBloc);
  141.             }  // fin if (connecte)
  142.         }); // fin getJSON
  143.     }); // fin clic
  144. } // fin initBloc
  145.  
  146.  
  147.  
  148. $(document).ready(function(){
  149.         var b1 = mkbloc(1);
  150.         var b2 = mkbloc(2);
  151.         var b3 = mkbloc();
  152.         initBloc(b2);
  153.         initBloc(b1);
  154.  
  155.  
  156.  
  157. });
  158. </script>
  159. <body>
  160.  
  161. <div id="modeles">
  162.     <div class="bloc" id="modeleBloc">
  163.         <div class="titre">Titre</div>
  164.         <div class="contenu">Contenu</div>
  165.     </div>
  166.  
  167.     <div id="modeleFormConnexion">
  168.         <div class="message"></div>
  169.         login: <br/> <input type="text" /> <br />
  170.         passe: <br/> <input type="password" /> <br />
  171.         <input class="btnConnexion"
  172.                         type="button" value="Se connecter"/>
  173.     </div>
  174.  
  175.     <div id="modeleChoixListe">
  176.         Mes listes : <br />
  177.         <select></select> <br />
  178.         <input class="btnChoixListe"
  179.                         type="button" value="Selectionner"/>
  180.     </div>
  181.  
  182.  
  183.  
  184.     <div id="modeleItems">
  185.         Mes items : </br></br>
  186.         <ul id="listeItems">
  187.         </ul>
  188.     </div>
  189.  
  190. </div>
  191.  
  192. </body>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement