Aide pour réinitialisation affichage

Bonjour à tous, j’ai pour habitude d’essayer de me débrouiller tout seul lorsque j’ai un problème mais là je tourne en rond depuis un moment.

J’ai repris le développement du plugin téléinfo et j’ai un petit souci au niveau du rafraichissement de l’affichage lorsque je passe de la configuration d’un compteur à un autre. Des images valent mieux qu’un long discours, voici la page de configuration d’un compteur assez complet:

lorsque je reviens au plugin et passe sur un autre compteur moins complet j’ai ça:

Toutes les colonnes s’initialisent bien sauf « Champ téléinfo » qui refuse d’afficher la valeur « selected » des select qui sont normalement vides (index 03 à 06). Si je rafraichis la page pas de pb tout redevient normal. J’ai essayé pas mal de choses comme header('Refresh: 0), … et rien n’y fait ou alors ça rafraichit en boucle et ce n’est pas ce que je souhaite.

Voici la partie de mon code qui affiche ce tableau:

                      <?php
                            //création du tableau des paramètres des index
                            $index=array('index01','index02','index03','index04','index05','index06','index07','index08','index09','index10');
                            $indexId=array("EASF01","EASF02","EASF03","EASF04","EASF05","EASF06","EASF07","EASF08","EASF09","EASF10",
                                            "HCHC", "HCHP", "EJPHN", "EJPHPM", "BBRHCJB", "BBRHPJB", "BBRHCJW", "BBRHPJW", "BBRHCJR","BBRHPJR");
                            $color = 0;
							foreach($index as $numindex){
                                $color += 1;
								$tableau.='<div class="form-group">';
									$tableau.='<label class="col-sm-2 control-label">{{Index '.substr($numindex,-2).'}} :</label>';
									$tableau.='<div class="col-sm-2">';
									    $tableau.='<input type="text" class="eqLogicAttr configKey" data-l1key="configuration" data-l2key="'.$numindex.'_nom" placeholder="{{...}}"/>';
									$tableau.='</div>';
									$tableau.='<label class="col-sm-1 control-label">{{ }}</label>';
									$tableau.='<div class="col-sm-2">';
										//$tableau.='<input type="text" class="eqLogicAttr configKey" data-l1key="configuration" data-l2key="'.$numindex.'" placeholder="{{...}}" />';
                                        $tableau.='<select class="eqLogicAttr configKey" data-l1key="configuration" data-l2key="'.$numindex.'">';
                                        $tableau.='<option selected="selected"></option>';
                                        foreach($indexId as $value){
                                            $tableau.='<option value='.$value.'>';
                                            $tableau.= $value.' </option>';
                                        }
                                        $tableau.='</select>';
									$tableau.='</div>';
								    $tableau.='<label class="col-sm-1 control-label">{{ }}</label>';
									$tableau.='<div class="col-sm-2">';
                                        $tableau.='<input type="number" class="eqLogicAttr configKey" data-l1key="configuration" data-l2key="Cout'.$numindex.'" placeholder="{{0}}"/>';
                                    $tableau.='</div>';
                                    $tableau.='<label class="col-sm-1 control-label">{{ }}</label>';
                                    $tableau.='<div class="col-sm-1">';
                                        $tableau.='<input type="color" class="eqLogicAttr configKey" id="favcolor'.$color.'"  data-l1key="configuration" data-l2key="color'.$color.'" name="favcolor'.$color.'">';
                                    $tableau.='</div>';
                                $tableau.='</div>';
                                    }
                        ?>
						<?php echo $tableau ?>


Si je mets une valeur dans le selected à la place de rien ($tableau.=‹  ›:wink: cela fonctionne mais comme j’ai basé pas mal de traitement sur le fait que cette information est soit remplie soit vide il faudrait que je reprenne tout, s’il le faut je le ferai mais j’aimerai trouver une autre solution.

Merci d’avance.

Salut,

ce n’est pas super clair pour moi, elle est où cette config?
dans la page de l’équipement?

ton code php ne peut servir qu’à afficher une page « vierge », il n’est pas « réexcuté » lorsque tu passes d’un équipement à un autre puisque la page n’est pas rafraichie, c’est ca le problème?

tu dois faire quelque chose en JS probablement mais compliqué à dire sans voir tout le code.

sur la 2e capture, dans la colonne « champ téléinfo », pour les lignes "index 01 et « index 02 », les valeurs sont correctes? celles-là ont été correctement sélectionnée mais pas celle des index 3 à 6 qui aurait du être vidé c’est ca?

Il y a p-e plus simple ou une autre solution mais si j’ai bien compris, tu devrais avoir une fonction js prePrintEqLogic qui sera appelé par le core lorsqu’un eqlogic est sélectionné (et que donc il faut l’afficher) mais avant le set des eqLogicAttr, dans cette méthode tu peux reset ton tableau en situtation « vierge » et ensuite les bonnes infos correspondantes à ton équipement seront mises par le core

pour info, il existe aussi printEqLogic qui est appelé après le set sur eqLogicAttr

Oui, dans la page de l’équipement

c’est exactement le pb

je vais regarder de ce côté, merci

c’est encore une fois exactement cela

Ok, je vais regarder aussi de ce côté là.

super, c’était la solution. Merci Mips :+1:

Si jamais d’autres se posent la question de savoir comment j’ai fait:

dans un script j’ai ajouté:

function prePrintEqLogic() {
    $('.eqLogicAttr[data-l1key=configuration][data-l2key=index01]').value(' ');
    ... (les autres champs à initialiser)
    }
1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.