Modifier la disposition tableau (suite)

Bonsoir,

Pour faire suite a ce thread :

@Bison ,
J’avoue que je n’ai pas encore eu le temps de tester ta modif :crazy_face:, mais c’est vrai qu’il y a quelques temps, j’avais déja réfléchi a apporter une solution pour améliorer l’UI de cette partie du core. Mais le Nemo que je suis, a faire 3 tours de son bocal et … :rofl:

J’ai quand même quelques chose de très simple, mais qui améliorerai considérablement l’UI : le drag en drop direct d’une ligne.

Je pense que cela peut être complémentaire a ta modif., ce que je te propose si tu veut bien, c’est que tu test les 2 modifs réunis, et si concluant je te laisserai le merge dans ton PR existant.

Voici la très grosse modif a apporter :crazy_face:

Après la ligne 672 ajout de :

        new Sortable(document.querySelector('#tableCmdLayoutConfiguration tbody'), {
          delay: 50,
          delayOnTouchOnly: true,
          draggable: 'tr',
          filter: 'input',
          preventOnFilter: false,
          direction: 'vertical',
          chosenClass: 'dragSelected',
          onUpdate: function(evt) {
            let tableLayout = document.getElementById('tableCmdLayoutConfiguration')
            var i_tr = 1
            tableLayout.querySelectorAll('tr').forEach(_cLay => {
              var i_td = 1
              _cLay.querySelectorAll('td').forEach(_td => {
                _td.setAttribute('data-line', i_tr)
                _td.querySelectorAll('input')[0].setAttribute('data-l3key', 'text::td::' + i_tr + '::' + i_td)
                _td.querySelectorAll('input')[1].setAttribute('data-l3key', 'style::td::' + i_tr + '::' + i_td)
                i_td++
              })
              i_tr++
            })
          }
        })

Et… c’est tout :rofl:

Résultat :
eqLogic.configure


testé en 4.4 et 4.5


EDIT :

Ce même code peut aussi être inséré dans l’autre modal qui gère aussi la disposition tableau :

Après la ligne 530.

4 « J'aime »

Hello @Phpvarious,

Ah, sympa en effet.

J’ai modifié le code depuis le post afin de rendre les choses encore plus facile avec des boutons plutôt que des inputs mais tu as du voir ça.

Je rajoute ton code demain matin sur ma version de test pour valider que l’ensemble marche bien et je te dis ça.

Je ne sais pas si je pourrais modifier pour refaire un commit à ce stade mais j’essaierai.

Merci :kissing_closed_eyes:

4 « J'aime »

Salut à tous les deux.
Question bête que j’ai peut être ratée : pourquoi ne traiter que les lignes et pas les colonnes ?

Hello,

Parce qu’il faut trouver le code pour faire ca :rofl:

J’ai jeté un œil ce matin, il faut modifier mon code, car dans ta modif. tu as ajouté un td, donc mon code modifié :

        new Sortable(document.querySelector('#tableCmdLayoutConfiguration tbody'), {
          delay: 50,
          delayOnTouchOnly: true,
          draggable: 'tr',
          filter: 'input',
          preventOnFilter: false,
          direction: 'vertical',
          chosenClass: 'dragSelected',
          onUpdate: function(evt) {
            let tableLayout = document.getElementById('tableCmdLayoutConfiguration')
            var i_tr = 1
            tableLayout.querySelectorAll('tr').forEach(_cLay => {
              var i_td = 1
              _cLay.querySelectorAll('td').forEach(_td => {
                _td.setAttribute('data-line', i_tr)
                if (is_object(_td.querySelector('span'))) {
                  _td.querySelector('span').innerHTML = i_tr
                } else {
                  _td.querySelectorAll('input')[0]?.setAttribute('data-l3key', 'text::td::' + i_tr + '::' + i_td)
                  _td.querySelectorAll('input')[1]?.setAttribute('data-l3key', 'style::td::' + i_tr + '::' + i_td)
                  i_td++
                }
              })
              i_tr++
            })
          }
        })

Edit :

J’ai aussi remarqué une erreur qui apparait sur ton code lorsque tu as une seul ligne et que tu tente de la supprimer.

Hello,

Alors je viens de tester mais ça fonctionne pas bien, ça détruit des valeurs (le nom des commandes) au moment de relâcher le clic souris mais je n’ai pas encore pris le temps de savoir quoi/comment/pourquoi

Ah … mince possible j’ai pas pensé à ce cas

Je suis souvent tombé dans des cas ou je devais modifier mes lignes mais pas les colonnes personnellement. Et le cas soulevé par vmath54 il y a quelques jours étaient aussi celui-ci du coup je n’ai regardé que pour traiter ce cas de figure.

C’est surement possible (quoi que je vois au moins un problème avec ce que j’avais fais). Du coup on garde ça en tête. On va déjà tenter de voir pour faire en sorte que mon code + celui de Phpvarious fonctionne parce que en l’état ça casse tout :sweat_smile:

Faut que je file donc pas le temps de m’y remettre avant ce soir

J’ai ciblé le problème, je regarde en fin de journée.

Bonjour,
Moi je n’ai rien à rajouter au code mais juste un petit mot pour dire à Bison et Phpvarious que bien entendu j’admire vos compétences et que vos interventions sont toujours humble et cordiale, tout à fait dans le style des gens que j’apprécie.
C’est avec des personnes comme vous que j’aimerai prendre l’apéro un jour.
:slightly_smiling_face: :wave:t5:

6 « J'aime »

On aurait presque pu le WE dernier, j’étais au parc expo de rennes pour une compétition de mon fils :grin:

Ah Jeedom, une sacré « Gymnastique » :joy:
Tu aurais poussé 20 kms de plus au sud et c’était chez moi.
Pendant que vous faisiez de la gym, nous c’était le Super Motard.

Bon je pense que c’est bon,

En partant de ta PR :

L441 à remplacer par

                    $tr .= '<span class="counterReorder">' . $i . '</span>';

Puis :

L708 à remplacer par

            newFirstCol += '<span class="counterReorder">' + i + '</span>'

Ensuite mon code a inserer après la ligne 679 :

        new Sortable(document.querySelector('#tableCmdLayoutConfiguration tbody'), {
          delay: 50,
          delayOnTouchOnly: true,
          draggable: 'tr',
          filter: 'input, a',
          preventOnFilter: false,
          direction: 'vertical',
          chosenClass: 'dragSelected',
          onUpdate: function(evt) {
            let tableLayout = document.getElementById('tableCmdLayoutConfiguration')
            var i_tr = 1
            tableLayout.querySelectorAll('tr').forEach(_cLay => {
              var i_td = 1
              _cLay.querySelectorAll('td').forEach(_td => {
                _td.setAttribute('data-line', i_tr)
                if (is_object(_td.querySelector('.counterReorder'))) {
                  _td.querySelector('span').innerHTML = i_tr
                } else {
                  _td.querySelectorAll('input')[0]?.setAttribute('data-l3key', 'text::td::' + i_tr + '::' + i_td)
                  _td.querySelectorAll('input')[1]?.setAttribute('data-l3key', 'style::td::' + i_tr + '::' + i_td)
                  i_td++
                }
              })
              i_tr++
            })
          }
        })

Bravo à vous deux, et merci.

J’ai pas mal utilisé la proposition de Bison, qui ne date pourtant que d’une semaine. J’hésitais auparavant à utiliser le mode tableau, car c’était trop compliqué ensuite à modifier.

Avec vos nouvelles modifs, ca va être un vrai jeu d’enfant :slightly_smiling_face: