Thanks, Soren, for the explanation and suggestions. My understanding of how the filters work is unfortunately very limited. I have been doing a lot of trial and error, sometimes finding a solution eventually, but too often without understanding of why it worked. Instead of continuing with that approach, I think asking a question and getting specific answers will lead to an increased understanding and it is already starting to pay off :)
The looping operation I described in the last post is a macro triggered by a Select widget. I use the actions attribute of the Select widget to call this code as a macro. Closing the first list widget (for the first level) before running the same operation at the next level was actually the first thing I attempted but I didn't manage to get it to work. The second list widget in the following code does not work. <$set name="taskVisibilityValue" value={{!!task_visibility}}> <$list filter="[all[current]tag[task]tagging[]]"> <$action-setfield $field="task_visibility" $value=<<taskVisibilityValue>> > </$list> <$list filter="[all[current]tag[task]tagging[]tagging[]]"> <$action-setfield $field="task_visibility" $value=<<taskVisibilityValue>> > </$list> </$set> What am I doing wrong? Note: The kin filter actually looks interesting and I might try it out if I will not solve it with core filter functionality or if I find more use cases for it. Best regards, Pall On Monday, March 1, 2021 at 12:29:25 AM UTC+1 Soren Bjornstad wrote: > Your first $list widget is resetting the current tiddler, so in your > second $list widget the all[current] doesn't mean the same thing as it did > in the first. If I'm understanding your tiddler layout correctly, I think > you should be closing the first $list widget prior to starting the second > one. > > As for a better way, the kin filter > <https://bimlas.gitlab.io/tw5-kin-filter/> can be used to merge all the > levels of a multi-level hierarchy into a single list, which would prevent > you from having to try to make this recursive to handle an arbitrary number > of levels. I think you should be able to get that to work here. > > (Also, pretty sure you need a $button widget somewhere if you want to > trigger anything, unless I'm missing something – but maybe you just left > that out for brevity.) > > On Sunday, February 28, 2021 at 3:45:26 PM UTC-6 psigu...@gmail.com wrote: > >> Oops, I missed the closing </$set> in both code fragments but that is not >> the issue. >> >> On Sunday, February 28, 2021 at 10:27:45 PM UTC+1 Pall Sigurdsson wrote: >> >>> Hello, >>> >>> This is my first post here. I discovered TiddlyWiki last November and >>> got hooked by its power and beauty. I challenging myself into programming >>> something which was supposed to be very simple in the beginning but who >>> knew that this would become so addictive? Anyhow, I have a question I'm >>> hoping someone here could help me with. >>> >>> How can one loop through tiddlers which are two levels downstream in the >>> tag-hierarchy or further? I already figure out how to copy a field value >>> from the current tiddler to all tiddlers which are tagging it and which >>> also have the tag 'task' but what I think I need help with is to propagate >>> the value 2-3 levels further. >>> >>> The following code fragment reads the task_visibility (custom) field of >>> the current tiddler and applies it to the next level below (only to >>> tiddlers which are also tagged with 'task'). >>> >>> <$set name="taskVisibilityValue" value={{!!task_visibility}}> >>> <$list filter="[tag[task]tag<currentTiddler>]"> >>> <$action-setfield $field="task_visibility" >>> $value=<<taskVisibilityValue>> > >>> </$list> >>> >>> Note: The filter above can be replaced with >>> "[all[current]tagging[]tag[task]]" - it works just the same. >>> >>> One of the things I tried for taking this one level further down the >>> task hierarchy was nesting the lists: >>> >>> <$set name="taskVisibilityValue" value={{!!task_visibility}}> >>> <$list filter="[all[current]tagging[]tag[task]]"> >>> <$action-setfield $field="task_visibility" >>> $value=<<taskVisibilityValue>> > >>> <$list filter="[all[current]tagging[]tagging[]tag[task]]"> >>> <$action-setfield $field="task_visibility" >>> $value=<<taskVisibilityValue>> > >>> </$list> >>> </$list> >>> >>> This code still works only on the first level below the current tiddler. >>> Does anyone know how to apply this to the next level below the first child >>> level (and further)? >>> >>> I'm also wondering whether it is a good idea to do this (or how far down >>> to go), whether there are performance issues to be expected with a loop >>> like this, when the hierarchy below the current tiddler might contain >>> dozens of tiddlers. >>> >>> Best regards, >>> Pall >>> - Currently on version 5.1.23 >> >> -- You received this message because you are subscribed to the Google Groups "TiddlyWiki" group. To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/d46b4da2-b3d5-4e46-ac3e-8ddf08019353n%40googlegroups.com.