Archives de la liste d​e​v​@p​a​h​e​k​o​.c​l​o​u​d​

Encore une question à propos de #list

lesanges at murena.io via dev

18/10/2023 11:38:17

Je sélectionne des documents avec un boucle #list ; dans chaque ligne générée 
par cette boucle #list se trouve l'identifiant d'un autre document dont je veux 
extraire une ou plusieurs informations que j'aimerais afficher sur la même ligne 
de tableau que les infos venant de #list.

Exemple : dans un document, j'ai :

- date
- inputNature
- amount
- key => l'identifiant d'un autre document
- comment

Je génère la liste de documents avec :

{{#list
   select="
     $$.date AS 'Date' ;
     $$.inputNature AS 'Type' ;
     $$.amount AS 'Nombre' ;

=> titre du champ provenant du document récupéré par #load
     "" AS 'Matériel' ;

     $$.comment AS 'Remarques'"
   type="movement"
   direction="entrée"
   order=1}}

puis je récupère le document associé à la clé avec

{{#load type="equipment" key=$equipment assign="equipment"}}

et j'affiche le tout ainsi :

         <tr>
           <td>{{$date|date_short}}</td>
           <td>{{$inputNature}}</td>
           <td>{{$amount}}</td>

=> ici, le champ designation vient du document récupéré par #load
           <td>{{$designation}}</td>

           <td>{{$comment}}</td>
           <td class="actions">
               {{:linkbutton label="Supprimer" ...}}
           </td>
         </tr>


L'affichage est correct, les tris fonctionnent sauf le tri sur le champ 
provenant du document récupéré par #load.

Est-ce qu'il y a moyen d'avoir le tri sur cette colonne ?

Encore une question à propos de #list

BohwaZ/Paheko

18/10/2023 12:56:07

"list" ne fait que créer une requête SQL, donc tu peux sélectionner
depuis une sous-requête qui renvoie à ta propre table si tu veux.

Par contre il manquait quelques trucs pour que ça soit pratique à
faire. Car j'ai eu le même besoin il y a quelques jours.

Je viens de rajouter :
https://fossil.kd2.org/paheko/info/da7020196daca8df

Qui permet de mentionner une table dans la syntaxe raccourcie
'$$.blabla' : '$table$.blabla'

Et d'utiliser @TABLE pour le nom de la table du module.

Du coup dans 1.3.1 tu pourra faire ceci :

{{#list
   select="
     $$.date AS 'Date' ;
     $$.inputNature AS 'Type' ;
     $$.amount AS 'Nombre' ;
     (SELECT $$.designation
       FROM @TABLE AS b
       WHERE b.$$.equipment = @TABLE.$$.equipment)
     AS 'Matériel' ;
     $$.comment AS 'Remarques'"
   type="movement"
   direction="entrée"
   order=1}}