OK, here's what worked for me. It took me a bit to figure it out, 
especially for making it work on a JSON tree, but it works.

\define makeRowspan()
 <$vars currentAction={{{ [all[current]indexes[Actions]sort[]first[]] }}} 
cnt="0" >
  <<addRows>>
 </$vars>
\end

define addRows() 
 <$set name="Items" filter=
"[all[current]indexes[Actions]addprefix[Actions/]addsuffix[/Items]]" select
=<<currentAction>> >
  <$set name="itemCount" value={{{ [all[current]indexes<Items>count[]] }}} >
   <$vars cnt={{{ [<cnt>add<itemCount>] }}} >
    <$list variable="currentAction" filter=
"[all[current]indexes[Actions]sort[]after<currentAction>]" emptyMessage=
"<<cnt>>" >
     <<addRows>>
    </$list>
   </$vars>
  </$set>
 </$set>
\end

and then in the <table>

<$wikify name=rows text=<<makeRowspan>> >
<td rowspan=<<rows>> > 
...

Thanks so much, Saq and Tony, this took me a lot further on the learning 
curve. Without you, I would have never come across using first[] and 
after[].

Best, Werner



Am Donnerstag, 27. August 2020 19:56:38 UTC+2 schrieb Saq Imtiaz:
>
> @werner precisely, its a recursive macro that processes each row, and 
> calls the macro again with the next row, inside a new vars widget with the 
> new incremented value of the variable.
>
> The emptyMessage is triggered at the end and gives the final cumulative 
> value.
>
> On Thursday, August 27, 2020 at 6:36:01 PM UTC+2 Werner wrote:
>
>> Thanks, Saq, so this means you are using recursion? Didn't realize this 
>> was possible in TW. I will yet have to try it out and get back to you.
>>
>>
>> Am Mittwoch, 26. August 2020 22:41:16 UTC+2 schrieb Saq Imtiaz:
>>>
>>> I'm a bit tired so this isn't as clear as I would like, but hopefully 
>>> this pseudocode will point you in the correct direction for the pattern for 
>>> getting this done with just wikitext:
>>>
>>> \define processRow()
>>> nestedRows = level2 +count[]
>>> <$vars cnt={{{[<cnt>add<nestedRows>]}}}>
>>> <$list filter="[[allrows] +[after<currentTiddler>]]" 
>>> emptyMessage="<<cnt>>">
>>> <<processRow>>
>>> </$list>
>>> </$vars>
>>> \end
>>>
>>> \define processAllRows()
>>> <$vars currentTiddler={{{[allrows] + first[]}}} cnt="0">
>>> <<processRow>>
>>> </$vars>
>>> \end
>>>
>>> <td rowspan=<<processAllRows>> > or set it to a variable for re-use.
>>>
>>> On Wednesday, August 26, 2020 at 9:16:30 PM UTC+2 Werner wrote:
>>>
>>>> Good evening guys, me again.
>>>>
>>>> I understand that the scope of a variable is defined by the enclosing 
>>>> <$vars> <$set> or <$wikify> widgets. I also understand that any new <$set> 
>>>> widget opens up a new scope, where a variable <myVar> defined in an outer 
>>>> scope would be overridden. I am facing a problem where I would need to 
>>>> access out-of-scope variables (or come up with a completely different 
>>>> approach).
>>>>
>>>> I am still working on a set of double-nested JSON data (using Josh 
>>>> Fontany's JSONmangler plugin). I want to display the content of the data 
>>>> in 
>>>> a table using table cells spanning multiple rows like <td rowspan = "5">. 
>>>> The problem here is, the rowspan is defined by the number of elements in 
>>>> the lowest nested level and I would need it before rendering the table and 
>>>> looping through the array elements fetching the data. So typically, in a 
>>>> garden variety programming language, I would do something as follows:
>>>>
>>>> totalRows = 0
>>>> Loop through Level1
>>>>    nestedRows= Level2.count()
>>>>    totalRows += nestedRows
>>>> End Loop
>>>>
>>>> Could anybody enlighten me, if a construct like this is possible in TW 
>>>> and how I would achieve it?
>>>>
>>>> Two fallback options: 
>>>> - storing the number of elements in the JSON structure (yuck - feels 
>>>> like cheating).
>>>> - throwing the whole JSON data structure at an JS macro. Positive side 
>>>> effect: I would have to dive into it and learn something new.
>>>>
>>>> Thanks for helping me out on this.
>>>> Best, Werner
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>

-- 
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/25008790-0ef4-4215-971c-b44a53db2e42o%40googlegroups.com.

Reply via email to