Hi Mat,
It works a little bit too well. The field update is applied everywhere
downstream in the hierarchy, not only the level immediately below and not
limited to the branch leading down from the current tiddler.
So let's say I apply it at level 2. Using only three nested list widgets I
was able to apply it five levels down (I didn't look further) and it was
also updating tiddlers in other branches.
How can I restrict the loop to the tag hierarchy below the current tiddler?
Regards,
Pall

On Mon, 1 Mar 2021, 22:12 Mat, <[email protected]> wrote:

> OK, so you just nest listwidgets like so:
>
> <$list filter="[tag[mytag]]">
> <$list filter="[tag<currentTiddler>]">
>
> </$list>
> </$list>
>
> Just add another for each level down. Each new layer inside would refer to
> <currentTiddler>.
>
> <:-)
>
> On Monday, March 1, 2021 at 2:15:46 PM UTC+1 [email protected] wrote:
>
>> Yes, Mat. That's the question :)
>>
>> On Monday, March 1, 2021 at 1:24:18 PM UTC+1 Mat wrote:
>>
>>> @psigu...
>>>
>>> TL:DR; <https://en.wikipedia.org/wiki/Wikipedia:Too_long;_didn%27t_read>
>>> Is this your question:
>>>
>>> >How can one loop through tiddlers which are two levels downstream in
>>> the tag-hierarchy or further?
>>>
>>> If that is your question, I will attempt to reply. If you have some
>>> other *complex *question, I suggest you split it up into distinct
>>> questions, perhaps separate posts, so that they can more easily be dealt
>>> with.
>>>
>>> <:-)
>>>
>>> On Monday, March 1, 2021 at 9:20:46 AM UTC+1 [email protected] wrote:
>>>
>>>> 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 [email protected]
>>>>> 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 a topic in the
> Google Groups "TiddlyWiki" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/tiddlywiki/ECYrNcJ8QsQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/tiddlywiki/dd6ca765-68d6-4054-8c51-419922994d4dn%40googlegroups.com
> <https://groups.google.com/d/msgid/tiddlywiki/dd6ca765-68d6-4054-8c51-419922994d4dn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/CAGzthpFHvDZLe2GSGSQneZxYU4DtyNO8MRUPjiLK7KJDUx%3DnEg%40mail.gmail.com.

Reply via email to