Liste imbriquées à partir de valeurs d'un champ


#1

Bonjour,

J’ai des tiddlers qui utilisent un champ ‘project’ qui peut avoir differentes valeurs (des noms de projets).
J’essaie de lister les tiddlers qui ont ce champ ‘project’ en les regroupant par valeurs du champ (un peu comme une table des matières en utilisant des tags).
Je n’ai pas reussi à trouver dans la doc (List ou GroupedList) la bonne façon de faire.
Quelqu’un a une idée?

Merci.


#2

Bonjour,

Pour une première approche, tu peux regarder par ici : https://tobibeer.github.io/tw/filters/#Filters

Enjoy!


#3

Bonjour,

Merci pour le lien.
J’ai essayé d’adapter les 2 exemples de grouplist mais sans succès.
Je ne suis pas encore expert dans le langage proposé par Tiddlywiki.

Je creuse!


#4

J’ai essayé ça :

<$list filter="[has[project]sort[project]]">
<$link><$view field=title/></$link><br>
</$list>

#5

Je suis effectivement arrivé a qqchose comme ca, en ajoutant dans le view le field project.
Mais j’obtiens une liste a plat avec mon field project répèté.
Maintenant je cherche à regrouper par valeurs de mon champs project. Donc avoir une liste dont le niveau 1 est une valeur du field project et en niveau 2 une liste des tiddlers qui ont le field project a cette valeur.

Si dans le filtre j’ajoute each[project]get[project] Jai bien ma liste de niveau 1, mais je n’arrive pas a lister les tiddlers en niveau 2.


#6

S’il y a deux niveaux, ne faut-il pas deux champs ?

Tu peux aussi regarder cet exemple :
http://cardo.wiki

et ce lien :
https://tiddlywiki.com/static/SelectWidget.html#Nested%20Lists

<$select tiddler='$:/generated-list-demo-nestedstate' field='type' default='text/vnd.tiddlywiki'>
<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group]]'>
<optgroup label={{!!group}}>
<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]'>
<option value={{!!name}}><$view field='description'><$view field='title'/></$view> (<$view field='name'/>)</option>
</$list>
</optgroup>
</$list>
</$select>

#7

Bonjour @grise44,

La piste donnée par @oxydum me semble intéressante et pertinente.

J’ai ouvert un sujet dans lequel j’adapte la solution via les listes imbriquées avec un petit exemple correspondant au besoin que tu formules dans ta question.

Ceci fonctionne très bien; le seul travail restant à faire étant de déclencher automatiquement l’ouverture des tiddlers de la liste sur clic, ce que je n’arrive pas à faire!.

@oxydum peut être maîtrises-tu le bout de code à rajouter pour finaliser le tout ?


#8

Éric,

J’ai bien aimé ton approche de ce sujet… je n’ose reformuler ta véritable question :
Est-ce que <$select /> est actionnable ?
Je l’ignore, alors le plus simple est d’ajouter
{{$:/demo-project!!type}}
à la fin de ton code, et de ne pas oublier de modifier :
<option value={{!!title}}>


#9

Jean Bernard,

Pragmatique tu es ! ou ; quand on ne peut passer par la porte, on le fait par la fenêtre :laughing:

Donc, une petite modif, un peu de cosmétique (mise en tableau pour ne pas laisser le tiddler Title en dessous de la liste qui le cache quand on l’ouvre…) et le tour est joué.

@grise44, cette solution peut-elle répondre à ta problématique ?


#10

Bonjour,

Merci pour vos suggestions. A partir de vos exemples, je suis arrivé a ce que je voulais.

Voici mon code:

<$list filter='[tag[Task]each[project]sort[project]]'>

!! {{!!project}}

<$list filter='[tag[Task]project{!!project}] +[sort[description]]'>

<$checkbox tag="Done"> <$link to={{!!title}}>  <$view field="title"/> <$view field="due" format="date" template="DDth MMM YYYY"/> </$link></$checkbox> <$list filter="[<currentTiddler>days:due[+1]]"> @@color:red;^^late^^@@</$list>

</$list>
</$list>

Explications de la structure de mes tiddlers:

  • Les tiddlers de type taches sont tagués Task
  • Ces tiddlers ont quelques champs:
    – project (nom d’un projet)
    – due (echeance)

Avec ce code, j’obtiens des sections de niveau 2 (!!) qui sont chacunes un nom de projet, puis dans chaque section la liste des taches concernées sous forme de checkbox pour les faire basculer en ‘done’ si besoin.

Encore merci pour votre aide!


#11

Bonjour @grise44

C’est moi qui te remercie de partager ta solution très intéressante!

Voici un cas qui me tient à cœur et qui concrétise ce que je dis de TiddlyWiki

Ses possibilités…

…peuvent amener "certains utilisateurs à considérer TiddlyWiki comme un outil sophistiqué mais accessible avec lequel ils pourront développer des solutions métier, personnelles ou partagées, leur permettant d’être plus performants dans le domaine qui est le leur.

Pour ceux qui sont intéressés, j’ai complété la solution initiale suggérée par @oxydum à partir de laquelle j’avais proposé un exemple similaire basé sur tes informations, par le même exemple fondé sur ton code. j’y ai juste ajouté les infos concernant le tag “Task” et le champ “due”.

Visible à la même adresse

Merci encore pour ce partage