Remember that in TW, the data dictionary is just a convenience tool. So 
it's ok to cheat. Or at least that's my theory.

<$vars cr="""
"""
sortby="[split[:]nth[2]]"
>
<$list filter="[[MyData]get[text]split<cr>sortsub:number<sortby>]" >

</$list>
</$vars>

Gives

lola: -7 <https://tiddlywiki.com/#lola%3A%20-7>
fifa: -2 <https://tiddlywiki.com/#fifa%3A%20-2>
nella: -1 <https://tiddlywiki.com/#nella%3A%20-1>
villa: 0 <https://tiddlywiki.com/#villa%3A%200>
rita: 1 <https://tiddlywiki.com/#rita%3A%201>
afra: 1 <https://tiddlywiki.com/#afra%3A%201>
cobra: 2 <https://tiddlywiki.com/#cobra%3A%202>
sina: 3 <https://tiddlywiki.com/#sina%3A%203>
zila: 3 <https://tiddlywiki.com/#zila%3A%203>



On Thursday, February 18, 2021 at 11:30:23 AM UTC-8 Mohammad wrote:

> when using nsort on new values (e.g. value::index note :: is a character 
> used to create new entries) it fails.
> One solution is as below, but for large number index - value (e.g 200 or 
> more) the solution is very slow
>
> This solution contains
>
> 1. a populate macro to list all values
> 2. a wikify and list widget let sort values
> 3. a lookup macro to find index(s) for a value
>
> \define  dataTiddler() myData  
> \define myfilter() [<dataTiddler>indexes[]] 
>
> \define populate()
> <$list filter="[subfilter<myfilter>]">
> <$text text={{{[<dataTiddler>getindex<currentTiddler>]}}}/>
> </$list>
> \end
>
> \define lookup-index(val)
> <$list filter="[subfilter<myfilter>]" variable=idx>
> <$list filter="[<dataTiddler>getindex<idx>] +[match[$val$]]">
> <tr>
> <td><$link to=<<idx>> /></td><td> $val$ </td>
> </tr>
> </$list>
> </$list>
> \end
>
>
> <table>
> <$wikify name=u text=<<populate>> >
> <$list filter="[enlist<u>nsort[]]">
> <$macrocall $name=lookup-index val=<<currentTiddler>> />
> </$list>
> </$wikify>
> </table>
>
>
> The above can be tested in https://tiddlywiki.com/ if one creates a data 
> tiddler with the myData title containing the data of the previous post.
>
> Question: as stated above this solution is very slow for large numbers of 
> data (index-value pairs). What alternative solution do you propose?
>
> Best wishes
> Mohammad
>
>
> On Thu, Feb 18, 2021 at 10:07 PM Mohammad Rahmani <[email protected]> 
> wrote:
>
>> This is an old question and there are several solution for that, but not 
>> for the case I explain here
>>
>> Assume you have a dataTiddler or JSON tiddler with data like below
>>
>> nella: -1
>> rita: 1
>> villa: 0
>> lola: -7
>> sina: 3
>> cobra: 2
>> fifa: -2
>> zila: 3
>> afra: 1
>>
>>
>> I want to list data in this dictionary table sorted by value, so I should 
>> have
>>
>>   lola: -7  
>>   fifa: -2 
>>   nella: -1  
>>   villa: 0  
>>   afra: 1  
>>   rita: 1  
>>   cobra: 2 
>>   sina: 3  
>>   zila: 3 
>>
>> Note, there are duplicated values. The solution is that new entries 
>> created from appending value to index like value::index do not work here!
>> As you need to use nsort
>>
>>
>>
>> Best wishes
>> 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/4f98a1bc-c408-4b6d-b89d-d4eebcb9561fn%40googlegroups.com.

Reply via email to