Mohammad,
Sorry for the delay in a response.
I used all tiddlers to include only the subset of what would be most likely
in a query of state and region tiddlers. This acts to limit the default.
I have no objection to your suggestion, however since this part of the
filter needs to be the same at all levels of the nested lists, perhaps
abstracting this to a subfilter makes more sense since you need only edit
in one place.
Perhaps a better approach would be a subfilter*, (This code untested
against data)*
\define tiddlerset-filter() [all[]]
<$list fiter="[subfilter<tiddlerset-filter>each[state]get[state]sort[]]"
variable=state>
<$list
fiter="[subfilter<tiddlerset-filter>state<state>each[region]get[region]sort[]]"
variable=region>
<$list fiter="[subfilter<tiddlerset-filter>state<state>region<region>
sort[]]">
<<currentTiddler>>
</$list>
</$list>
</$list>
Regards
Tony
On Monday, December 9, 2019 at 5:44:20 AM UTC+11, Mohammad wrote:
>
>
>
> On Saturday, December 7, 2019 at 8:42:44 AM UTC+3:30, TonyM wrote:
>>
>> I do not mean to sound competitive, but all you need is .nested lists
>>
>> <$list fiter="[all[tiddlers]each[state]get[state]sort[]]" variable=state>
>> <$list fiter="[all[tiddlers]state<state>each[region]get[region]sort[]]"
>> variable=region>
>> <$list fiter="[all[tiddlers]state<state>region<region>sort[]]">
>> <<currentTiddler>>
>> </$list>
>> </$list>
>> </$list>
>> gives a list sorted by state then region then tiddler title
>> not tested against data
>>
>> note the groups state and region use "each" and the inner list only lists
>> those with the same state<state> and region<region> at a time
>>
>> to keep it tidy i use the same name as the field as the variable name
>> generated by the each lists.
>>
>> state<state> means list all tiddlers with the state field = the value in
>> the `<<state>> variable.
>>
>> you could wrap the whole thing or make it more levels deep however a new
>> outer filter may need every filter to be updated. See how every list filter
>> starts with all[tiddlers] a fresh, so if you want to operate on all
>> tiddlers this is fine but only with tag[a] would need to read
>> [all[tiddlers]tag[a] to each filter.
>>
>
> What do you think if we omit the all[tiddlers]. I think the input of every
> filter is all[tiddlers] or all[tiddlers+shadows] so it should not affect
> the performance in this case! What do you think?
>
>>
>>
>> Regards
>> Tony
>>
>> On Saturday, December 7, 2019 at 3:47:14 PM UTC+11, Mark S. wrote:
>>>
>>>
>>> There are different approaches. The easiest would be to make a button
>>> that, when pressed, populates a fourth field that can then be sorted.
>>>
>>> Here's an approach that doesn't require two steps, but it does assume
>>> that "@@" is reserved:
>>>
>>> \define sortus()
>>> <$vars lb="[[" rb="]]">
>>> <$list filter="[has[fa]]">
>>> <$list
>>> filter="[<currentTiddler>addprefix[@@]addprefix{!!fc}addprefix{!!fb}addprefix{!!fa}addprefix<lb>addsuffix<rb>]"/>
>>> </$list>
>>> </$vars>
>>> \end
>>>
>>> <$wikify text=<<sortus>> name="ready2sort">
>>> <$list filter="[enlist<ready2sort>sort[]]" variable="sorted">
>>> <$list filter="[<sorted>split[@@]rest[]]"/>
>>> </$list>
>>> </$wikify>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Friday, December 6, 2019 at 7:53:03 PM UTC-8, Mohammad wrote:
>>>>
>>>> Assume you have a bunch of tiddlers
>>>>
>>>> - all tagged with data
>>>> - all have three fields fa, fb, fc
>>>>
>>>>
>>>> How one can produce a list of tiddlers where they are
>>>>
>>>> - sorted first by fa
>>>> - then by field fb
>>>> - then by field fc
>>>>
>>>>
>>>> This means to keep the multiple sort order!
>>>>
>>>> --Mohammad
>>>>
>>>
--
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/17d5198d-7a92-43ef-942e-ba91b1b01c69%40googlegroups.com.