Salut,
J’ai besoin d’un coup de main
J’essaie de voir comment améliorer ce que j’ai commencé à faire pour la suppression et l’ajout d’une ligne dans un tableau (design) avant de faire une PR histoire de faire un peu mieux pour respecter de respecter la charte graphique Jeedom et d’améliorer l’UI.
La page en question : desktop/modal/eqLogic.configure.php
J’ai ajouté 2 boutons et un numéro de ligne dans le tableau, le but étant de reproduire ce que j’avais fait en utilisant des inputs
Le principe est ici, comme souvent, est de charger en PHP puis de reconstruire l’affichage depuis une fonction JS quand on clique sur un bouton
Je mets l’ensemble du fichier à la fin du post mais si je ne montre que ce qui permet l’ajout de la partie qui n’existait pas :
La partie PHP :
$tr .= '<td data-line="' . $i . '" data-column="0" style="width: 4%;">';
$tr .= '<a id="bt_removeRow" class="bt_removeRow pull-left" style="margin-right: 15px;"><i class="fas fa-minus-circle"></i></a>';
$tr .= $i;
$tr .= '<a class="bt_addRow pull-right" style="margin-right: 15px;"><i class="fas fa-plus-circle"></i></a>';
$tr .= '</td>';
La partie en JS :
var newTr = document.createElement('tr')
let newFirstCol = '<td data-line="' + i + '" data-column="0" style="width: 4%;">'
newFirstCol += '<a id="bt_removeRow" class="bt_removeRow pull-left" style="margin-right: 15px;"><i class="fas fa-minus-circle"></i></a>'
newFirstCol += i
newFirstCol += '<a class="bt_addRow pull-right" style="margin-right: 15px;"><i class="fas fa-plus-circle"></i></a>'
newFirstCol += '</td>'
newTr.insertAdjacentHTML('beforeend', newFirstCol)
L’affichage au chargement de la page ressemble à ça :
L’affichage une fois que l’on a cliqué sur le - ou le + est identique (ici j’ai inséré une ligne) :
Le problème : Les boutons - et + ne servent plus à rien dès que l’affichage est reconstruit en JS
La fonction JS qui permet d’intercepter n’a plus l’air de servir …
document.querySelector('#tableCmdLayoutConfiguration').addEventListener('click', function(event) {
...
})
Le code vu des outils de dev au chargement de la page initiale :
Le code une fois que le JS rechargé :
Je ne vois pas de différence et l’id du tableau ( tableCmdLayoutConfiguration
) est bien présent, ainsi que les classes bt_removeRow et bt_addRow
Qu’est-ce qui pourrait expliquer que l’instruction addEventListener ne fait plus le job ?
Le code est encore un peu à nettoyer car j’ai pas fini mais voilà le fichier complet (base de Bêta 4.5) :
eqLogic.configure.php.txt (57,1 Ko)